首页 > 数据库 >SQL server跨库链接服务器

SQL server跨库链接服务器

时间:2024-04-19 13:23:06浏览次数:19  
标签:跨库 数据库 server 实例 SQL 服务器 链接

SQL server进阶技能篇:SQL的跨库查询与链接服务器 - 知乎 (zhihu.com)

各位小伙伴们,关于MSSQL的基本技能篇前面一共写了10篇,也基本上算是告一段落,接下来将开始介绍进阶技能篇。在构思这个进阶技能篇的时候,一直在考虑先写哪个,其实到看到这部分内容能理解的人,基本上对SQL数据库知识已经了解到一定程度了,所以计划还是想到哪里写到哪里吧。

今天所要讲到的是跨库查询和链接服务器,在说这个跨库查询之前,有个基本的知识点必须明白:一个服务端上可能有多个实例,一个实例下可能有多个数据库。举个例子吧,服务端好比一栋楼,其中的实例好比楼中的很多房间,数据库呢相当于房间中的人,这个包含关系首先得理解,才能更好理解下面的内容:

(1)同实例下跨库查询:

在当前数据库连接状态下,需要查询同实例下,其他数据库里的表,引用方法: 数据库名..表名(或其他对象名) 代码如下

select  top 100 * from  stu_cou..cou

(2)跨实例(跨服务器)查询:

这种情况需要先建立链接服务器,然后才能联通查询。以MSSQL的链接服务器建立过程为例,过程简介如下:

1)在实例下找到“服务器对象”--“链接服务器”--右键--新建链接服务器;

2)在弹出的页面中,默认选中“常规”节点,填写链接服务器的名称,选择“提供程序”为SQL server, 在“数据源”栏输入对方数据库的实例地址和名称;

3)单击“安全性”选项卡,选中“使用此安全上下文建立连接”,输入对方的数据库名和密码;

4)单击服务器选项,双击修改RPC和RPC out的状态为“True”。

5)点击“确定”,此时链接服务器就新建完成,在左侧的对象资源管理器,依次展开“链接服务器”就可以查看到下面的数据库目录。

调用方法:链接服务器名 . 数据库名 . 用户名(如dbo). 表名(或其他对象名) 代码如下:

INSERT INTO WSND.ASMC.dbo.hzpytmp
VALUES('1','1','2')

select  * from WSND.ASMC.dbo.hzpytmp
 
 delete from WSND.ASMC.dbo.hzpytmp

补充下,在新建链接服务器的时候,除了以上使用可视化方式新建以外,还要用语句的方法也可以实现,代码如下:

exec sp_addlinkedserver '链接服务器名', '', 'SQLOLEDB', '对方实例地址'
exec sp_addlinkedsrvlogin '链接服务器名', 'false',null,'登录用户名', '密码'

有兴趣的可以自己试试。

总结:

(1) 同实例下跨库查询用起来简单,跨实例访问首先需要保证网络和端口是通的,得连接的上才能做链接;

(2) 跨库链接访问对象和在本地访问本库的对象,用法基本上是一样的,可以insert、select也可以delete,但是跨库访问有可能会遇到数据库进制不一样,导致排序规则不一致进而影响数据关联的问题,这个需要在后面加上以下代码,指定排序规则;

collate Chinese_PRC_CI_AS

最后,链接服务器在处理事务的时候,还经常会遇到分布式服务的问题,这个留到下一篇讲述。今天的分享就到这里,如果觉得有用,请分享邀请更多小伙伴前来围观。

标签:跨库,数据库,server,实例,SQL,服务器,链接
From: https://www.cnblogs.com/LuoCore/p/18145689

相关文章

  • SQLAlchemy 2.0 中文文档翻译完成
    SqlAlchemy2.0中文文档概述SQLAlchemyUnifiedTutorial建立连接-Engine处理事务和DBAPI处理数据库元数据处理数据使用插入语句使用SELECT语句使用UPDATE和DELETE语句使用ORM进行数据操作处理ORM相关对象进一步阅读SQLAlchemyORMORM快速入门ORM......
  • Sqlsugar 的使用
    1、实体特性[SugarColumn(IsPrimaryKey=true)]标识是否为主键[SugarColumn(IsIdentity=true)]是否为自增长[SugarColumn(ColumnName="id")]对应数据库表里面的某列[SugarColumn(IsIgnore=true)]忽略熟悉,在ORM会过滤掉[SugarColumn(ColumnDescription="创建时间"......
  • Qt6 连接 MySql数据库
    前言教程参考:http://t.csdnimg.cn/wKAk3Qt6是没有mysql驱动是要自己安装的,而且在Qt6是没有.pro文件,只能用cmake进行编译,特别的坑。我也是被坑惨了,还去傻乎乎地找.por文件,整了半天。必看这个教程是针对Qt6的,如果用的是Qt5,则不适用!在连接前要先安装Mysql,可以参考http://t......
  • Ubuntu22.04安装MySQL8
    Ubuntu22.04安装MySQL8第一部分:安装mysql使用apt安装sudoaptupdatesudoaptinstall-ymysql-server安装完成之后自动结束,不需要输入密码。更新用户密码这里默认安装的是mysql8.0版本,因为i没有输入密码;所以无法使用mysql-uroot-p进入mysql,需要执行这个命令(一定要......
  • Ubuntu22.04安装PostgreSQL15
    Ubuntu22.04安装PostgreSQL15启用PostgreSQL包存储库sudosh-c'echo"debhttp://apt.postgresql.org/pub/repos/apt$(lsb_release-cs)-pgdgmain">/etc/apt/sources.list.d/pgdg.list'wget-qO-https://www.postgresql.org/media/keys/ACCC4CF8......
  • 【面试准备】【SQL】数据库有哪些约束?
    数据库中的约束(constraints)是用来确保数据库中数据的准确性和可靠性的一种规则。以下是一些常见的数据库约束:PRIMARYKEY(主键):确保列的值是唯一的,并且不能为NULL。FOREIGNKEY(外键):用于在两个表之间建立链接,并确保引用的数据的完整性。UNIQUE(唯一):确保所有列的组合在表中是......
  • NL2SQL技术方案系列(1):NL2API、NL2SQL技术路径选择;LLM选型与Prompt工程技巧,揭秘项目落
    NL2SQL技术方案系列(1):NL2API、NL2SQL技术路径选择;LLM选型与Prompt工程技巧,揭秘项目落地优化之道NL2SQL基础系列(1):业界顶尖排行榜、权威测评数据集及LLM大模型(SpidervsBIRD)全面对比优劣分析[Text2SQL、Text2DSL]NL2SQL基础系列(2):主流大模型与微调方法精选集,Text2SQL经典算法......
  • NL2SQL实践系列(2):2024最新模型实战效果(Chat2DB-GLM、书生·浦语2、InternLM2-SQL等)
    SQL实践系列(2):更多模型使用以及工业级案例NL2SQL基础系列(1):业界顶尖排行榜、权威测评数据集及LLM大模型(SpidervsBIRD)全面对比优劣分析[Text2SQL、Text2DSL]NL2SQL基础系列(2):主流大模型与微调方法精选集,Text2SQL经典算法技术回顾七年发展脉络梳理NL2SQL进阶系列(1):DB-GPT-H......
  • GreatSQL 死锁案例分析
    1.背景概述客户业务发生死锁的报错,根据业务程序日志及业务流程,发现造成死锁的原因是:事务1delete+insert,事务2delete+insert2个事务交替执行导致的死锁;由于GAP锁阻塞了插入意向锁,并且当delete的数据存在时死锁不会发生,当delete的数据不存在时,会发生死锁。2.问题复现本......
  • mysql
    sql语法单行或多行书写,分号结尾sql语句不区分大小写DDL数据定义语言数据库操作CREATEDATABASE[IFNOTEXISTS]name[DEFAULTCHARSET=name]DROPDATABASEnameUSEnameSHOWDATABASESSELECTDATABASE()表操作SHOWTABLESDESCname//显示表结构SHOWCRE......