相关疑难解决方法(0)

有条件地在SQL Server中创建用户

如果用户尚不存在,我想在数据库'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)

如何更改脚本以便仅在用户不存在时才创建用户?

谢谢!

sql-server sql-server-2005

23
推荐指数
3
解决办法
4万
查看次数

如何检查 Azure SQL 数据库中是否已存在数据库用户

我的新客户计划使用 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)

t-sql sql-server azure dacpac azure-sql-database

4
推荐指数
2
解决办法
4899
查看次数