我想的数据复制testdabse.invoice
表basecampdev.invoice
表。 testdabse
是本地数据库,而basecampdev
是在服务器中。
我对将数据复制到另一个表不起作用查询时,它说
Invalid object name 'basecampdev.dbo.invoice'.
我一直在阅读这个文件 ,但发现很难跟踪和理解。
这些都是从服务器提供的信息
Server type: Database Engine
Server name: server.database.windows.net (this is not the real name)
Authentication: SQL Server Authentication
Login: myusername
Password: mypassword
我怎样才能连接到服务器,这样我就可以运行此查询
INSERT INTO [basecampdev].[dbo].[invoice]
([InvoiceNumber]
,[TotalAmount]
,[IsActive]
,[CreatedBy]
,[UpdatedBy]
,[CreatedDate]
,[UpdatedDate]
,[Remarks])
SELECT [InvoiceNumber]
,[TotalAmount]
,[IsActive]
,[CreatedBy]
,[UpdatedBy]
,[CreatedDate]
,[UpdatedDate]
,[Remarks] FROM [testdabse].[dbo].[invoice]
屏幕快照
这听起来像你可能需要创建和SQL Server查询链接的数据库服务器
此刻的你已经创建了一个使用一个3部分组成的名称不同的数据库之间去查询mydatabase.dbo.mytable
但你需要去一个级别,并使用一个4部分组成的名称myserver.mydatabase.dbo.mytable
,看到这个帖子上四个部分命名的更多信息
编辑
这四个部分命名为您现有的查询将以下(我怀疑你可能已经试过?)被如图所示,但是这是假定你可以“得到”与四个部分名称的远程数据库,您可能需要编辑您的主机文件/注册服务器或者以其他方式确定在哪里可以找到database.windows.net
。
INSERT INTO [DATABASE.WINDOWS.NET].[basecampdev].[dbo].[invoice]
([InvoiceNumber]
,[TotalAmount]
,[IsActive]
,[CreatedBy]
,[UpdatedBy]
,[CreatedDate]
,[UpdatedDate]
,[Remarks])
SELECT [InvoiceNumber]
,[TotalAmount]
,[IsActive]
,[CreatedBy]
,[UpdatedBy]
,[CreatedDate]
,[UpdatedDate]
,[Remarks] FROM [BC1-PC].[testdabse].[dbo].[invoice]
如果您无法访问远程服务器,然后看看你可以创建一个链接数据库服务器 :
EXEC sp_addlinkedserver [database.windows.net];
GO
USE tempdb;
GO
CREATE SYNONYM MyInvoice FOR
[database.windows.net].basecampdev.dbo.invoice;
GO
然后,你可以查询反对MyEmployee
无需完整的四个部分名称
由西蒙给出的答案工作正常,我,但你必须这样做,以正确的顺序:首先,你必须在要插入数据是[DATABASE.WINDOWS.NET]服务器[basecampdev]在您的案件。
你可以试试,看看你可以选择一些数据出来的发票表,以确保您可以访问。
Select top 10 * from [DATABASE.WINDOWS.NET].[basecampdev].[dbo].[invoice]
其次,实行以链接到不同的服务器由西蒙给出的查询。 这次使用其他服务器:
EXEC sp_addlinkedserver [BC1-PC]; -- this will create a link tempdb that you can access from where you are
GO
USE tempdb;
GO
CREATE SYNONYM MyInvoice FOR
[BC1-PC].testdabse.dbo.invoice; -- Make a copy of the table and data that you can use
GO
现在只是做你的INSERT语句。
INSERT INTO [DATABASE.WINDOWS.NET].[basecampdev].[dbo].[invoice]
([InvoiceNumber]
,[TotalAmount]
,[IsActive]
,[CreatedBy]
,[UpdatedBy]
,[CreatedDate]
,[UpdatedDate]
,[Remarks])
SELECT [InvoiceNumber]
,[TotalAmount]
,[IsActive]
,[CreatedBy]
,[UpdatedBy]
,[CreatedDate]
,[UpdatedDate]
,[Remarks] FROM MyInvoice
希望这可以帮助!
你不能直接从一个不同的数据库中的表复制到目标服务器数据库,如果源数据库是不是在你的链接服务器。 只有一种解释可能是,产生所需的表的脚本,(架构与数据)到一个临时表在源服务器数据库,然后执行该脚本在目标服务器数据库创建表与您的数据。 最后使用INSERT INTO [DESTINATION_TABLE] SELECT * FROM [TEMPORARY_SOURCE_TABLE。 获取数据到目标表后删除临时之一。
我发现这个解决方案时,我遇到了同样的情况。 希望这可以帮助你。
USE [mydb1]
SELECT *
INTO mytable1
FROM OPENDATASOURCE (
'SQLNCLI'
,'Data Source=XXX.XX.XX.XXX;Initial Catalog=mydb2;User ID=XXX;Password=XXXX'
).[mydb2].dbo.mytable2
/* steps -
1- [mydb1] means our opend connection database
2- mytable1 means create copy table in mydb1 database where we want insert record
3- XXX.XX.XX.XXX - another server name.
4- mydb2 another server database.
5- write User id and Password of another server credential
6- mytable2 is another server table where u fetch record from it. */