首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何让存储过程调用同一SQL服务器上的外部数据库?

如何让存储过程调用同一SQL服务器上的外部数据库?
EN

Stack Overflow用户
提问于 2010-01-13 07:02:19
回答 2查看 1.8K关注 0票数 3

我正在处理一个web应用程序,它使用2个不同的数据库来存储信息。这些数据库具有一些引用另一个数据库中的记录的数据库键。我希望能够用SQL2005编写一个存储过程,它可以修改当前数据库中的数据,也可以出去修改其他数据库中的一些数据。这个是可能的吗?多么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-01-13 07:04:35

您可以完全限定表名(我假设数据库在同一个db服务器上)

例如,来自DB1中的存储过程:

代码语言:javascript
复制
UPDATE DB2.dbo.MyOtherTable
SET Field = 'SomeValue'
WHERE ID = 1
票数 6
EN

Stack Overflow用户

发布于 2010-01-13 07:08:49

因为您在同一个SQL服务器上,所以这是一个相对简单的任务。

无论在哪里引用另一个数据库中的表,只需使用该数据库名称对其进行限定即可。

所以,你可能会有:

代码语言:javascript
复制
Update table1
Set col = 'val'
Where Id = @Id

你只需要:

代码语言:javascript
复制
Update DatabaseName.dbo.table1
Set col = 'val'
Where Id = @Id

请注意,.dbo是表所在的数据库模式。

如果需要转到其他服务器,则需要设置链接服务器。

你可能会发现另外两件事很方便:

同义词

同义词允许您使用以下代码为被引用的表创建别名:

代码语言:javascript
复制
CREATE SYNONYM [dbo].[TheOtherTable] FOR [OtherDataBase].[dbo].[OtherTable]

这允许您在过程中简单地使用TheOtherTable。

SQLCMD模式

当您将项目从开发阶段提升到测试阶段再到生产阶段时,您可能会发现数据库名称在环境中发生了变化。如果您有多个数据库引用,这很快就会成为一种痛苦。

SQLCMD脚本允许您指定在脚本运行时替换的变量。在处理引用不同数据库中的表的过程时,我发现这非常方便。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2053129

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档