我有一个会改变的链接服务器.有些程序会像这样调用链接服务器:[10.10.100.50].dbo.SPROCEDURE_EXAMPLE.我们也有触发器做这种工作.我们需要找到[10.10.100.50]用于改变它的所有地方.
在SQL Server Management Studio Express中,我没有在Visual Studio中找到类似"在整个数据库中查找"的功能.一个特殊的系统选择可以帮助我找到我需要的东西吗?
在Management Studio中,我正在尝试运行查询/在两个链接的服务器之间进行连接.这是使用链接数据库服务器的正确语法:
select foo.id
from databaseserver1.db1.table1 foo,
databaseserver2.db1.table1 bar
where foo.name=bar.name
Run Code Online (Sandbox Code Playgroud)
基本上,您是否只将db服务器名称添加到db.table?
我有两个SQL服务器(运行SQL Server 2008)命名DATA01和DATA02.DATA02具有链接的服务器定义LINK,指向DATA01适当的用户映射设置.在DATA01那里有一个MyDatabase包含这两个表的数据库:
CREATE TABLE T_A (
Id int
)
CREATE TABLE T_B (
Id int,
Stuff xml
)
Run Code Online (Sandbox Code Playgroud)
当我从中运行此命令时DATA02,我按预期返回数据:
SELECT Id FROM LINK.MyDatabase.dbo.T_A;
Run Code Online (Sandbox Code Playgroud)
但是,当我运行此命令时DATA02,我收到一个错误:
SELECT Id, Stuff FROM LINK.MyDatabase.dbo.T_B;
Run Code Online (Sandbox Code Playgroud)
错误是
分布式查询不支持Xml数据类型.远程对象'DATA02.MyDatabase.dbo.T_B'具有xml列.
奇怪的是,这个命令:
SELECT Id FROM LINK.MyDatabase.dbo.T_B;
Run Code Online (Sandbox Code Playgroud)
即使我不是SELECTxml列,也会出现同样的错误!这是怎么回事?
假设,我有一个testdb在测试服务器中命名的数据库.此外,我在prod服务器中有一个名为proddb的数据库.
现在我想从proddb数据库中选择testdb数据库表的数据.
我怎么能这样做SQL Server?
另外,我可以用做数据库链接的预言.但是如何在SQL Server中做到这一点?
我在SQL Server上遇到这个奇怪的错误.我在旧帖子中找不到解决方案.
我有这个程序:
create proc _upJM_SyncAll_test
as
begin
DECLARE @SQLString nvarchar(max)
set @SQLString = N'
DELETE FROM OPENQUERY([LOCAL_MYSQL],''SELECT acSubject FROM _utjm_setitemprices'') where acSubject not in (select acSubject from _uvJM_SetSubj)
DELETE FROM OPENQUERY([LOCAL_MYSQL],''SELECT acSubject FROM _utjm_setsubj'') where acSubject not in (select acSubject from _uvJM_SetSubj)
update a
set acName2 = b.acName2,
acName3 = b.acName3,
acAddress = b.acAddress,
acPost = b.acPost,
acPostName = b.acPostName,
acCountry = b.acCountry,
acVATCodePrefix = b.acVATCodePrefix,
acCode = b.acCode,
anDaysForPayment = b.anDaysForPayment
from OPENQUERY([LOCAL_MYSQL],''SELECT * FROM _utjm_setsubj'') a join …Run Code Online (Sandbox Code Playgroud) 我希望能够以编程方式(在T-SQL中)检查我当前的服务器和数据库是否已存在特定的链接服务器(如果链接尚不存在,我可以创建它).我试过这样的东西:
IF OBJECT_ID('myserver\devdb_1') IS NULL
BEGIN
PRINT 'Does not exist, need to create link'
EXEC master.dbo.sp_addlinkedserver @server = N'myserver\devdb_1',
@srvproduct=N'SQL Server'
END
ELSE
PRINT 'Link already exists'
Run Code Online (Sandbox Code Playgroud)
但OBJECT_ID测试始终返回null,即使该链接已存在.任何方法都可以检查T-SQL,以便我的其余代码可以假设链接始终存在?
我想将数据从一个服务器的数据库移植到另一个服务器的数据库.这些数据库都位于不同的mssql 2005服务器上.复制可能不是一个选项,因为目标数据库是在[时间间隔]的基础上从头开始生成的.
我倾向于做类似的事情
insert *
from db1/table1
into db2/table2
where rule1 = true
Run Code Online (Sandbox Code Playgroud)
很明显,连接凭据会在这个脚本中出现.
我正试图解决一个问题,一次,我没有创造.
我在一个环境中工作,有许多Web应用程序由不同服务器上的不同数据库支持.
每个数据库在设计和应用方面都相当独特,但我仍想提取每个数据库中的常见数据.例如,每个数据库都有供应商表,用户表等......
我想将这个常见数据抽象到单个数据库,但仍然让其他数据库加入这些表,甚至还有密钥来强制执行约束等等......我在MsSql环境中.

有哪些选择?我看到它的方式,我有以下选择:
还有什么需要考虑的吗?
我添加了一个链接服务器,它显示在链接服务器列表中,但是当我查询它时,它会引发数据库服务器名称的错误.
EXEC sp_helpserver
EXEC sp_addlinkedserver 'aa-db-dev01'
Select * from openquery('aa-db-dev01','Select * from TestDB.dbo.users')
Run Code Online (Sandbox Code Playgroud)
消息102,级别15,状态1,行
1'aa-db-dev01'附近的语法不正确.
我从本地的Sql Server创建了一个链接服务器,如下所示
http://sqlserverplanet.com/dba/local-linked-server
但是,当我尝试在链接服务器中执行存储过程时,它会抛出:
Deferred prepare could not be completed
Run Code Online (Sandbox Code Playgroud)
错误和无效的对象名称'表名'
linked-server ×10
sql-server ×10
database ×2
sql ×2
t-sql ×2
cross-server ×1
msdtc ×1
triggers ×1
xml ×1