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作为数据库参考 但它不起作用 那么如何清除此警告
答案 0 :(得分:1)
主数据库引用不包含登录。您可以通过添加CREATE LOGIN sa...
来避免警告。脚本到你的项目。
请注意,实际的sa
登录可能已重命名,因此部署登录会创建名称为sa
的不同登录名,而不是系统管理员角色成员,除非添加{{1脚本也是。
就个人而言,我会完全避免ALTER SERVER ROLE sysadmin ADD MEMBER sa;
并在需要时使用certificates to elevate permissions。这样更安全,因为它避免了授予EXECUTE AS LOGIN
权限的需要。