我正在尝试运行以下SQL:
INSERT INTO Suppliers ( [SupplierID], [CompanyName])
Select [SupplierID], [CompanyName] From [AlexDB]..Suppliers
并收到错误“此版本的sql server不支持对数据库和/或服务器名称的引用”
知道如何在服务器“内部”的数据库之间复制数据吗? 我可以将数据加载到客户端然后再回到服务器,但这非常慢。
答案 0 :(得分:60)
我知道这已经过时了,但我还有另一种手动解决方案。
使用SQL Management Studio R2 SP1连接到azure,我右键单击源数据库并选择生成脚本。
在向导中,在我选择了表格后,我选择了要输出到查询窗口,然后单击高级。大约在属性窗口的一半 “脚本数据类型”有一个选项。我选择并将其更改为“仅数据”,然后我完成向导。
我所做的就是检查脚本,重新排列插入的约束,并更改顶部的使用以针对我的目标数据库运行它。
然后我右键单击目标数据库并选择新查询,将脚本复制到其中,然后运行它。
完成,迁移数据。
希望能帮到某人
答案 1 :(得分:14)
自2015年起,可以使用elastic database queries(也称为cross database queries)来完成此操作。
我创建并使用了这个模板,它在20分钟内复制了150万行:
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
CREATE DATABASE SCOPED CREDENTIAL SQL_Credential
WITH IDENTITY = '<username>',
SECRET = '<password>';
CREATE EXTERNAL DATA SOURCE RemoteReferenceData
WITH
(
TYPE=RDBMS,
LOCATION='<server>.database.windows.net',
DATABASE_NAME='<db>',
CREDENTIAL= SQL_Credential
);
CREATE EXTERNAL TABLE [dbo].[source_table] (
[Id] BIGINT NOT NULL,
...
)
WITH
(
DATA_SOURCE = RemoteReferenceData
)
SELECT *
INTO target_table
FROM source_table
答案 2 :(得分:7)
不幸的是,在单个查询中无法执行此操作。
实现它的最简单方法是使用“数据同步”来复制表格。这样做的好处是它也可以在服务器之间工作,并使您的表保持同步。
http://azure.microsoft.com/en-us/documentation/articles/sql-database-get-started-sql-data-sync/
在实践中,我没有那种在生产中运行“数据同步”的经验,但它对于一次性工作很好。
“数据同步”的一个问题是它会在您的数据库中创建大量“同步”对象,并且从Azure门户中删除实际的“数据同步”可能会也可能不会清除它们。按照本文中的说明手动清除所有内容:
https://msgooroo.com/GoorooTHINK/Article/15141/Removing-SQL-Azure-Sync-objects-manually/5215
答案 3 :(得分:3)
SQL-Azure不支持USE语句,实际上不支持跨数据库查询。所以上面的查询一定会失败。
如果要将数据库复制/备份到另一个sql azure db,可以在SQL-Azure中使用“Same-server”复制或“跨服务器”复制。 Refer this msdn article
答案 4 :(得分:3)
您可以使用Red Gate Software中的SQL Data Compare工具,它可以将数据库内容从一个地方移动到另一个地方,并完全支持SQL Azure。 14天免费试用应该让你看看它是否可以做你需要的。
完全披露:我为Red Gate Software工作
答案 5 :(得分:3)
使用以下步骤,没有直接的方法可以这样做。但通过一些技巧,我们可以。
步骤1:在[AlexDB]中创建另一个具有相同Structure表结构的表,将其称为SuppliersBackup
步骤2:在DesiredDB中创建与Suppliers表相同结构的表
步骤3:在AlexDB..Suppliers和DesiredDB..Suppliers之间启用数据同步
步骤4:截断来自AlexDB..Suppliers的数据
步骤5:将数据从AlexDB..SuppliersBackup复制到AlexDB..Suppliers
步骤6:现在运行同步
数据已复制到DesiredDB。
答案 6 :(得分:2)
旧帖子,但另一个选项是Sql Azure Migration wizard
答案 7 :(得分:2)
如果您的onprem版本具有sp_addlinkedsrvlogin,则可以为源数据库和目标数据库设置链接服务器,然后您可以运行插入查询。
请参阅此博客中的“针对Windows Azure SQL数据库的链接服务器和分布式查询的SQL Server支持”:https://azure.microsoft.com/en-us/blog/announcing-updates-to-windows-azure-sql-database/
答案 8 :(得分:1)
好吧,我想我找到了答案 - 没办法。必须将数据移动到客户端,或做一些其他技巧。这是指向文章的链接,其中包含解释:Limitations of SQL Azure: only one DB per connection 但欢迎任何其他想法!
答案 9 :(得分:0)
一些选项(而不是解决方法):
不幸的是,到目前为止还没有简单易用的内置方式。
答案 10 :(得分:0)