Visual Studio数据库项目警告:过程有一个未解析的对象引用[sa]

时间:2017-12-14 11:33:12

标签: sql sql-server-2012

Iam使用sql server 2012和visual studio 2017

我已经使用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]

我搜索并发现一些解决方案建议添加master作为数据库参考 但它不起作用 那么如何清除此警告

1 个答案:

答案 0 :(得分:1)

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

请注意,实际的sa登录可能已重命名,因此部署登录会创建名称为sa的不同登录名,而不是系统管理员角色成员,除非添加{{1脚本也是。

就个人而言,我会完全避免ALTER SERVER ROLE sysadmin ADD MEMBER sa;并在需要时使用certificates to elevate permissions。这样更安全,因为它避免了授予EXECUTE AS LOGIN权限的需要。