Azure SQL创建数据库范围的凭据

ada*_*dam 5 sql azure azure-sql-database

我正在尝试使用SSMS在Azure SQL中创建作用域凭证。

CREATE DATABASE SCOPED CREDENTIAL [cred-name] WITH IDENTITY = [db-user], SECRET = 'password'
Run Code Online (Sandbox Code Playgroud)

我不断遇到错误消息,指出“'cred-name'附近的语法不正确。预期为'='。” 我不确定我的语法是不正确的,因为我过去已经成功完成了此确切命令,所以我不确定发生了什么变化。我以为可能只是intellisense搞砸了,所以我将SSMS实例从17.3更新到17.7,但仍然收到相同的错误消息。

有谁知道可能会发生什么变化?

Eva*_*ula 7

运行您针对Microsoft SQL Azure (RTM) - 12.0.2000.8 May 4 2018 13:05:56版本发布的准确 T-SQL会导致以下错误:

Msg 102, Level 15, State 1, Line 1
Incorrect syntax near 'db-user'.
Run Code Online (Sandbox Code Playgroud)

将身份名称括号替换为单引号会导致以下错误:

Msg 15581, Level 16, State 6, Line 1
Please create a master key in the database or open the master key in the session before performing this operation.
Run Code Online (Sandbox Code Playgroud)

使用以下 T-SQL 创建主密钥允许我成功创建凭据:

CREATE MASTER KEY ENCRYPTION BY PASSWORD='MyPassw0rdIsComplex.'
GO

CREATE DATABASE SCOPED CREDENTIAL [cred-name] WITH IDENTITY = 'db-user' , SECRET = 'password'
GO
Run Code Online (Sandbox Code Playgroud)

此外,您可以使用以下查询检查范围凭据:

SELECT * FROM sys.database_scoped_credentials WHERE credential_identity='db-user'
Run Code Online (Sandbox Code Playgroud)

我使用的是 SSMS 17.2 版,但我不确定这是否重要,因为错误来自 SQL Server 引擎本身。