Visual Studio数据库项目警告:过程未解决对象[SA]



iam使用SQL Server 2012和Visual Studio 2017

ihave创建了一个使用Target Platform = SQL Server 2012创建的数据库项目并做出以下过程

CREATE PROCEDURE [MySchema].[MyProcedure]
    WITH ENCRYPTION
AS
BEGIN
    SET NOCOUNT ON;
    EXECUTE AS LOGIN = 'sa'
        INSERT INTO [MySchema].[TableName]
        (
            Column1,
            Column2
        )
        Values
       (1,
       2)
END

但是当我构建项目时,我得到了以下警告

[MySchema].[MyProcedure] has an unresolved reference to object [sa]

我搜索并找到了一些解决方案,建议将主添加为数据库参考但是它不起作用因此,如何清除此警告请

主数据库引用不包括登录。您可以通过添加CREATE LOGIN sa...来避免警告。脚本到您的项目。

请注意,实际sa登录可能已重命名,以便部署登录将创建一个不同的登录名,除非也添加ALTER SERVER ROLE sysadmin ADD MEMBER sa;脚本,否则它不是sysadmin角色成员的名称sa

就个人而言,我将完全避免使用EXECUTE AS LOGIN,并在需要时使用证书来提升权限。这更安全,因为它避免了授予IMPERSONATE权限的需要。

最新更新