【问题标题】:Copy data between online and offline servers via Sql command通过 Sql 命令在在线和离线服务器之间复制数据
【发布时间】:2016-12-07 10:25:57
【问题描述】:
SET IDENTITY_INSERT [Offline Server_name].[demo].[dbo].[Company] ON
INSERT INTO [demo].[dbo].[Company](Id, Name)
SELECT Id, Name
FROM [Online server_name].[SmartDistributorToy].[dbo].[Company]
SET identity_insert [demo].[dbo].[Company] OFF

我得到的错误是:

找不到对象“Offline Server_name.demo.dbo.Company”,因为它不存在或者您没有权限。

【问题讨论】:

    标签: sql-server insert server connection


    【解决方案1】:

    应将 Offline_Server_Name 和 Online_Server_name 命名的 SQL Server 实例定义为当前 SQL Server 实例

    您可以通过creating as Linked Server 链接其他 SQL Server 实例 请参考 SQL 教程。创建 SQL Server 链接服务器定义后,您可以在 SQL 代码中使用别名

    您可以更改本地服务器数据库表上的 IDENTITY_INSERT

    当我尝试跟随它时,它没有问题

    set identity_insert [db_currentserver].[dbo].[Company] on
    
        insert into [db_currentserver].[dbo].[Company]
            (
                Id,
                Name
            ) 
        select 
            Id,
            Name 
        from 
            [LinkedServer].[db_remoteserver].[dbo].[Company] 
    
    set identity_insert [db_currentserver].[dbo].[Company] off
    

    db_currentserver 是在当前实例上创建的数据库 db_remoteserver 是远程 SQL Server 实例上的数据库,它被定义为当前 SQL Server 实例作为链接服务器

    【讨论】:

    • 但是这个查询在离线服务器中工作到离线
    • 您好,Arvind。 @Eralper 是正确的。当您查询数据库时,这是使用连接完成的。每个连接仅限于一个 SQL Server 实例。除非您连接到的 SQL Server 是 linked 到另一个。您是针对在线服务器还是离线服务器运行此查询?
    • 对象名称“Server_name.Passwor.database_name.dbo.Company”包含的前缀数量超过了最大数量。最大值是3。这个错误又来了
    • 问题可能是链接服务器上的数据库表的 IDENTITY_INSERT。您可以更改位于当前实例上的数据库表上的 identity_insert 参数,但对于远程服务器似乎不可能
    • 命名管道提供程序:无法打开与 SQL Server [53] 的连接。生成此错误
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-15
    • 2020-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-29
    • 1970-01-01
    相关资源
    最近更新 更多