linkedserverdemo10.sql
来自「T-SQL示例大全」· SQL 代码 · 共 89 行
SQL
89 行
/* 文件名称: LinkedServerDemo10.sql */
USE master
GO
-- 连接服务器 AccessXP 的数据来源是一个 Access 数据库
EXEC sp_addlinkedserver
@server = 'AccessXP',
@srvproduct = N'Access 2002',
@provider = N'Microsoft.Jet.OLEDB.4.0',
@datasrc = N'C:\T-SQL\Database\北风贸易公司.mdb'
GO
-- 表示如果您采用 SQL Server 的帐户验证连接至 SQL Server, 则以
-- 用户名称 Admin 且没有密码登录连接服务器 AccessXP 。
EXEC sp_addlinkedsrvlogin 'AccessXP','false',NULL,'Admin',NULL
GO
-- 连接服务器 MyLinkedServer1 的数据来源是网络名称为 TPSERVER 的 SQL Server
-- 此连接服务器已指定当前数据库
EXEC sp_addlinkedserver @server = 'MyLinkedServer1',
@srvproduct = N'',
@provider = N'SQLOLEDB',
@datasrc = N'TPSERVER',
@catalog = '北风贸易'
GO
-- 连接服务器 MyLinkedServer2 的数据来源是网络名称为 W2KSTATION1 的 SQL Server
-- 此连接服务器已指定当前数据库
EXEC sp_addlinkedserver @server = 'MyLinkedServer2',
@srvproduct = N'',
@provider = N'SQLOLEDB',
@datasrc = N'W2KSTATION1',
@catalog = '北风贸易'
GO
USE 北风贸易
GO
if exists (select * from dbo.sysobjects where id = object_id(N'我的数据表')
and OBJECTPROPERTY(id, N'IsUserTable') = 1)
DROP TABLE 我的数据表
GO
-- 将 OPENQUERY() 函数返回从各个远程不同种类的数据来源
-- 所返回的数据加以合并然后存入一个新数据表中
SELECT * INTO 我的数据表
FROM OPENQUERY(AccessXP,
'SELECT 姓名,DateDiff("yyyy",出生日期,Date()) AS 年龄,地址
FROM 章立民工作室 WHERE 地址 LIKE ''%桃园县%''')
UNION ALL
SELECT * FROM OPENQUERY(MyLinkedServer1,
'SELECT 姓名,年龄 = DATEDIFF(yy,出生日期,GETDATE()),地址
FROM 章立民工作室 WHERE 地址 LIKE ''%台中市%''')
UNION ALL
SELECT * FROM OPENQUERY(MyLinkedServer2,
'SELECT 姓名,年龄 = DATEDIFF(yy,出生日期,GETDATE()),地址
FROM 章立民工作室 WHERE 地址 LIKE ''%高雄市%''')
ORDER BY 2 DESC
GO
SELECT * FROM 我的数据表
GO
-- 将 OPENQUERY() 函数返回从各个远程不同种类的数据来源
-- 所返回的数据加以连接以便取得相关联的数据
SELECT a.客户编号, a.公司名称,
Year(b.订单日期) AS 年份,
Month(b.订单日期) AS 月份,
Sum(c.单价*c.数量*(1-c.折扣)) AS 小计
FROM OPENQUERY(AccessXP,'SELECT * FROM 客户') a
INNER JOIN
OPENQUERY(MyLinkedServer1,'SELECT * FROM 订货主档') b
ON a.客户编号 = b.客户编号
INNER JOIN
OPENQUERY(MyLinkedServer2,'SELECT * FROM 订货明细') c
ON b.订单号码 = c.订单号码
GROUP BY a.客户编号, a.公司名称, Year(b.订单日期), Month(b.订单日期)
ORDER BY a.公司名称, Year(b.订单日期), Month(b.订单日期)
GO
-- 删除连接服务器。
-- 再次提醒您,于正常状况下,连接服务器不会立即删除,
-- 而会持续使用,直到您真的不需要再使用为止。
EXEC sp_dropserver 'AccessXP','droplogins'
EXEC sp_dropserver 'MyLinkedServer1'
EXEC sp_dropserver 'MyLinkedServer2'
GO
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?