gpt4 book ai didi

sql - 创建数据库范围的凭证语法

转载 作者:行者123 更新时间:2023-12-04 17:55:57 26 4
gpt4 key购买 nike

在 VS2015 中处理数据库项目(Azure SQL V12 项目)。我需要使用外部表引用,所以我必须创建一个凭据对象来对远程服务器进行身份验证。下面的代码和错误,不确定我遗漏了什么。

SQL 代码

创建数据库范围的凭证 [mycredential]和身份 = '某些身份', secret = '一些 secret ';

错误:

Incorrect syntax near '[mycredential]'. Expecting '=' Incorrect syntax near 'IDENTITY'. Expecting AW_CHANGE_TRACKING_CONTEXT, AW_ID, AW_XMLNAMESPACES, or QUOTED_ID.

最佳答案

好的,我在VS2017 DB项目中也遇到过这个问题,我的做法是使用stored procs,这样intellisense就不会报错了。因为我发现代码在运行时有效。下面是我使用的存储过程:

您在“CREATE EXTERNAL TABLE”语句的“YOUR_EXTERN_TABLE”中定义了您的外部引用表(在此示例中,它被设置为具有 ID 和 Name 列的架构):

CREATE PROCEDURE [dbo].[StoredProcWithExternalRefs] 
@DatabaseName AS NVARCHAR(30),
@Passw AS NVARCHAR(100),
@SaID AS NVARCHAR(100),
@DataSource AS NVARCHAR(512),
@Catalog AS NVARCHAR(200)
AS
BEGIN

SET NOCOUNT ON;
SET IMPLICIT_TRANSACTIONS OFF;


DECLARE @SQLString nvarchar(200);

PRINT 'START'

PRINT 'CREATE DATABASE'

SET @SQLString = N'CREATE DATABASE [' + @DatabaseName + ']'

EXECUTE sp_executesql @SQLString

SET @SQLString = N'CREATE MASTER KEY ENCRYPTION BY PASSWORD = ''' + @Passw + ''';

CREATE DATABASE SCOPED CREDENTIAL credential_name
WITH IDENTITY = ''' + @SaID + '''
, SECRET = ''' + @Passw + ''';

CREATE EXTERNAL DATA SOURCE RemoteReferenceData
WITH
(
TYPE=RDBMS,
LOCATION=''' + @DataSource + ''',
DATABASE_NAME=''' + @Catalog + ''',
CREDENTIAL= credential_name
);

CREATE EXTERNAL TABLE YOUR_EXTERN_TABLE(
[Id] [int] NOT NULL,
[Name] [nvarchar](20) NOT NULL,
) WITH ( DATA_SOURCE = RemoteReferenceData );'
...


EXECUTE sp_executesql @SQLString

PRINT 'DONE.'




END

您可以在“CREATE EXTERNAL TABLE”语句和模式中添加具有相同模式的额外外部表。

这里有一个指导您的引用:https://sqldusty.com/2017/05/30/setting-up-cross-database-queries-in-azure-sql-database/

关于sql - 创建数据库范围的凭证语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40363702/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com