fib*_*ics 19 sql sql-server openrowset
我试图将testdabse.invoice
表的数据复制到basecampdev.invoice
表.
testdabse
是basecampdev
在服务器中的本地数据库.
它说,我将数据复制到另一个表的查询不起作用
Invalid object name 'basecampdev.dbo.invoice'.
Run Code Online (Sandbox Code Playgroud)
我一直在阅读这个文档,但发现很难理解和理解.
这些是从服务器给出的信息
Server type: Database Engine
Server name: server.database.windows.net (this is not the real name)
Authentication: SQL Server Authentication
Login: myusername
Password: mypassword
Run Code Online (Sandbox Code Playgroud)
如何连接到服务器以便我能够运行此查询
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]
Run Code Online (Sandbox Code Playgroud)
屏幕截图
Sim*_*tin 18
听起来您可能需要在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]
Run Code Online (Sandbox Code Playgroud)
如果无法访问远程服务器,请查看是否可以创建链接数据库服务器:
EXEC sp_addlinkedserver [database.windows.net];
GO
USE tempdb;
GO
CREATE SYNONYM MyInvoice FOR
[database.windows.net].basecampdev.dbo.invoice;
GO
Run Code Online (Sandbox Code Playgroud)
然后你可以查询MyEmployee
而不需要完整的四部分名称
小智 5
西蒙给出的答案对我来说很好,但你必须按照正确的顺序来做:首先,你必须在你想要插入数据的服务器中,其中 [DATABASE.WINDOWS.NET].[basecampdev] 在你的案件。
您可以尝试查看是否可以从 Invoice 表中选择一些数据以确保您具有访问权限。
Select top 10 * from [DATABASE.WINDOWS.NET].[basecampdev].[dbo].[invoice]
Run Code Online (Sandbox Code Playgroud)
其次,执行 Simon 给出的查询以链接到不同的服务器。这次使用其他服务器:
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
Run Code Online (Sandbox Code Playgroud)
现在只需执行插入语句。
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
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助!