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
权限的需要。