如果用户尚不存在,我想在数据库'mydb'中创建用户'foo'.目前我的脚本如下所示:
USE [mydb]
CREATE USER [foo] FOR LOGIN [foo]
GO
Run Code Online (Sandbox Code Playgroud)
但是,如果用户已存在,则会失败并显示错误消息:
Msg 15023, Level 16, State 1, Line 2
User, group, or role 'jsrvpp' already exists in the current database.
Run Code Online (Sandbox Code Playgroud)
如何更改脚本以便仅在用户不存在时才创建用户?
谢谢!
我的新客户计划使用 Azure 托管 SQL 数据库服务。我正在使用 dacpac 来部署数据库。在 dacpac 中,我有一个部署后脚本来创建一个 sql 用户,如下所示
IF NOT EXISTS (SELECT name
FROM sys.server_principals
WHERE name = 'myusername')
BEGIN
CREATE LOGIN myusername
WITH PASSWORD = '******';
END
GO
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试在 Azure(使用目标平台 - Microsoft Azure SQL 数据库 V12 编译)中应用 dacpac 时,它会引发以下错误。
An error occurred while the batch was being executed.
Updating database (Failed)
*** Could not deploy package.
Error SQL72014: .Net SqlClient Data Provider: Msg 208, Level 16, State 1, Line 4 Invalid object name 'sys.server_principals'.
Error SQL72045: …Run Code Online (Sandbox Code Playgroud)