You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从本地SQL Server通过链接服务器向Azure SQL Database执行动态SQL?

解决本地SQL Server链接Azure SQL单数据库创建表的40515错误

问题原因

Azure SQL单数据库不支持在链接服务器调用中引用master.dbo.sp_executesql,它没有传统SQL Server的master数据库跨库访问权限,且架构限制了这种带服务器/数据库名的系统存储过程调用方式。

解决方案1:直接执行目标数据库的CREATE TABLE语句

无需嵌套调用sp_executesql,直接构造针对链接服务器目标数据库的创建语句:

DECLARE @LinkedServer sysname = N'MyAzureSQLDatabaseLinkedServer',
        @SQL nvarchar(max);

-- 替换YourTargetDB为实际的Azure SQL数据库名
SELECT @SQL = 'CREATE TABLE ' + @LinkedServer + '.YourTargetDB.dbo.flarb(splort int);';

EXEC sys.sp_executesql @SQL

解决方案2:使用OPENQUERY执行动态SQL

如果需要更灵活的动态SQL,可通过OPENQUERY传递执行语句:

DECLARE @LinkedServer sysname = N'MyAzureSQLDatabaseLinkedServer',
        @SQL nvarchar(max);

SET @SQL = 'CREATE TABLE dbo.flarb(splort int);'

EXEC OPENQUERY(@LinkedServer, @SQL)

注意事项

  • 确保链接服务器的登录账户拥有Azure SQL目标数据库的CREATE TABLE权限
  • 必须替换示例中的YourTargetDB为实际的Azure SQL数据库名称
  • Azure SQL单数据库禁止跨系统数据库(如master)的操作,避免此类引用

内容的提问来源于stack exchange,提问作者laurens

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 01:13:17