Ale*_*nko 27 sql azure azure-sql-database
我试图运行以下SQL:
INSERT INTO Suppliers ( [SupplierID], [CompanyName]) 
Select  [SupplierID], [CompanyName] From [AlexDB]..Suppliers
并收到错误"此版本的sql server不支持对数据库和/或服务器名称的引用"
知道如何在服务器"内部"的数据库之间复制数据吗?我可以将数据加载到客户端然后再返回到服务器,但这非常慢.
Mar*_*nes 68
我知道这已经过时了,但我还有另一个手动解决方案.
使用SQL Management Studio R2 SP1连接到azure,我右键单击源数据库并选择生成脚本.
在向导中,在我选择了表格后,我选择了要输出到查询窗口,然后单击高级.在属性窗口的大约一半处,有一个"脚本数据类型"选项.我选择并将其更改为"仅数据",然后我完成向导.
我所做的只是检查脚本,重新排列插入的约束,并更改顶部的使用以针对我的目标数据库运行它.
然后我右键单击目标数据库并选择新查询,将脚本复制到其中,然后运行它.
完成,数据迁移.
希望有人帮助
Mag*_*agu 17
自2015年以来,这可以通过使用弹性数据库查询(也称为跨数据库查询)来完成.
我创建并使用了这个模板,它在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
小智 8
不幸的是,在单个查询中无法做到这一点.
完成它的最简单方法是使用"数据同步"来复制表格.这样做的好处是它也可以在服务器之间工作,并使您的表保持同步.
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
SQL-Azure 不支持 USE 语句,并且实际上不支持跨数据库查询。所以上面的查询肯定会失败。
如果要将数据库复制/备份到另一个 sql azure 数据库,可以使用 SQL-Azure 中的“同一服务器”复制或“跨服务器”复制。参考这篇msdn文章