使用sql server查询远程数据库?

Ani*_*mde 3 t-sql sql-server linked-server

我已经使用sp_addlinkedserver访问远程机器db现在我在数据库上显式编写查询,如,

从[server\instance] .database.owner.tablename中选择*

有了这个,

  1. [Server\instance]:必须明确提供
  2. [数据库]:我们可以使用像ms_ForEachDB这样的查询在指定实例上查找数据库吗?
  3. [owner]:我们可以使用查询找到数据库所有者名称吗?

如果使用查询我们是否需要使用EXEC发现这些值()来执行,否则我们仍然可以使用nice查询实现的呢?

谢谢大家,

gbn*_*gbn 7

你提到的"漂亮"格式只是一个4部分的对象引用.

select * from [server\instance].database.owner.tablename
Run Code Online (Sandbox Code Playgroud)

3部分

select * from database.owner.tablename
Run Code Online (Sandbox Code Playgroud)

2部分

select * from owner.tablename
Run Code Online (Sandbox Code Playgroud)

如果要动态更改任何服务器,数据库或模式值,那么您有一个选项:

EXEC (@sqlstring)
Run Code Online (Sandbox Code Playgroud)

但是,如果您只是远程访问存储过程...

DECLARE @RemoteSP varchar(500)

SET @RemoteSP = '[server\instance].database2.schema.proc2'
EXEC @RemoteSP @p1, @p2, @p3 OUTPUT

SET @RemoteSP = '[server\instance].database1.schema.proc1'
EXEC @RemoteSP @p4, @p5, @p6 OUTPUT
Run Code Online (Sandbox Code Playgroud)

但是,更改对象引用的组件毫无意义:如果您知道要查询表,那么只需在该数据库中调用该表...