SQL Server Linked Server支持DDL语句吗?

在SQL Server中,linked server支持DDL语句吗?例如,我可以通过linked server去创建一个表吗?如果可以的话,那么有哪一些方式执行DDL语句呢?其实linked server是支持DDL语句的。下面我们来简单演示一下。

首先,我们必须将linked server的rpc out属性(server option)设置为true,这个是linked server执行DDL语句的前提条件

USE [master]
GO
EXEC master.dbo.sp_serveroption @server=N'LNK_SVR_TEST', @optname=N'rpc out', @optvalue=N'true'
GO

如果不开启这个server option的话,执行下面语句就会报错

EXEC ('
    CREATE TABLE [dbo].[Test](
        [ID] [INTIDENTITY(1,1NOT NULL,
        [Name] [NVARCHAR](32NULL
    );
') AT LNK_SVR_TEST;

Msg 7411, Level 16, State 1, Line 4
未将服务器 'LNK_SVR_TEST' 配置为用于 RPC。

注意:LNK_SVR_TEST是当前用作测试的linked server。

linked server执行DDL语句的方式:

方式1:EXECUTE AT 方法

EXECUTE AT 方法,允许针对链接服务器执行动态SQL。EXECUTE调用的参数之一是AT,它旨在绕过OPENQUERY和OPENROWSET限制。

语法如下:

EXECUTE (``<query>``AT [<linked server>] 

例子:

EXEC ('
    CREATE TABLE [dbo].[Test](
        [ID] [INTIDENTITY(1,1NOT NULL,
        [Name] [NVARCHAR](32NULL
    );
') AT LNK_SVR_TEST;

EXEC ('
    ALTER TABLE  [dbo].[TestADD [Sex] BIT;
') AT LNK_SVR_TEST;


EXEC ('
    DROP TABLE [dbo].[Test] ;
') AT LNK_SVR_TEST;

方式2:使用sp_executesql执行DDL语句

具体例子如下所示:

通过linked server删除表

DECLARE @LinkedServerName VARCHAR(32)='LNK_SVR_TEST';
DECLARE @LinkedDbName VARCHAR(32)='UniMonDB'
DECLARE @sql NVARCHAR(MAX), @exec NVARCHAR(MAX);

SET @sql = N'DROP TABLE dbo.TEST;';

SET @exec = QUOTENAME(@LinkedServerName) + N'.' 
  + QUOTENAME(@LinkedDbName) + N'.sys.sp_executesql';

EXEC @exec @sql;

通过linked server创建表

DECLARE @LinkedServerName VARCHAR(32)='LNK_SVR_TEST';
DECLARE @LinkedDbName VARCHAR(32)='UniMonDB'
DECLARE @sql NVARCHAR(MAX), @exec NVARCHAR(MAX);

SET @sql = N' CREATE TABLE [dbo].[Test](
        [ID] [INT] IDENTITY(1,1) NOT NULL,
        [Name] [NVARCHAR](32) NULL
    );'
;

SET @exec = QUOTENAME(@LinkedServerName) + N'.' 
  + QUOTENAME(@LinkedDbName) + N'.sys.sp_executesql';

EXEC @exec @sql;


原文始发于微信公众号(DBA闲思杂想录):SQL Server Linked Server支持DDL语句吗?

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/227790.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!