You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在SQL Server Management Studio中将Azure SQL数据复制到本地SQL Server?

嘿,针对你要把Azure SQL的数据复制到本地SQL Server的需求,我给你整理了几种在SSMS里就能搞定的方案,按操作难度和适用场景分,你可以按需选:

方案一:用SSMS「导入数据」向导(最直观,适合新手)

这是最省心的方式,全程图形化操作,不用写太多代码:

  • 打开SSMS,先连接到本地SQL Server(也就是你要把数据复制过去的目标服务器)
  • 在对象资源管理器里,找到目标数据库,右键它 → 「任务」→ 「导入数据」,启动导入向导
  • 第一步选数据源:数据源类型挑「SQL Server Native Client 11.0」(或者对应你SSMS版本的客户端),然后填写Azure SQL的服务器名(格式是tcp:xxx.database.windows.net,1433),身份验证选「SQL Server身份验证」,输入Azure那边的用户名和密码,再选中要导出数据的Azure数据库,点击下一步
  • 第二步选目标:目标类型同样是SQL Server,连接到你的本地服务器,用本地的SQL Server身份验证凭据,选中要接收数据的本地数据库,下一步
  • 选择「复制一个或多个表或视图的数据」,下一步
  • 重点来了:因为90%的数据集中在一两张表里,直接勾选这几张关键表就行(按住Ctrl可以多选)。如果需要调整表结构映射(比如新建表还是覆盖已有表、字段对应关系),点击「编辑映射」确认,没问题就下一步
  • 最后可以选择「立即运行」,也可以把这个导入流程保存成SSIS包以后复用,点击完成就开始复制了

注意事项:

  • 先确保Azure SQL的防火墙允许你的本地服务器IP访问:去Azure门户找到你的SQL服务器,在「防火墙和虚拟网络」里添加本地服务器的公网IP,不然连不上Azure库
  • 2.4GB的数据不算特别大,只要网络稳定,几分钟就能搞定,别中途关掉SSMS就行

方案二:用T-SQL脚本(适合自动化/精准控制)

如果你习惯用代码操作,或者需要把复制流程做成定时任务,这个方案更合适,分两种方式:

方式A:用OPENROWSET直接查询插入

首先得在本地服务器开启Ad Hoc分布式查询权限:

sp_configure 'show advanced options', 1;
RECONFIGURE;
sp_configure 'Ad Hoc Distributed Queries', 1;
RECONFIGURE;

然后执行插入语句,把Azure的表数据导到本地:

-- 替换成你的本地库、目标表,以及Azure的服务器/数据库/用户名密码
INSERT INTO 本地数据库名.dbo.目标表名
SELECT * FROM OPENROWSET(
    'SQLNCLI11',
    'Server=tcp:你的Azure服务器名.database.windows.net,1433;Database=Azure数据库名;UID=Azure用户名;PWD=Azure密码;',
    'SELECT * FROM dbo.源表名'
);

方式B:创建链接服务器

先在本地服务器上建立和Azure SQL的链接,之后就能像访问本地表一样访问Azure的表:

  • 在SSMS的对象资源管理器里,展开「服务器对象」→ 「链接服务器」→ 右键新建链接服务器
  • 链接服务器名称随便取个好记的,服务器类型选「SQL Server」,切换到「安全性」选项卡,选择「使用此安全上下文建立连接」,输入Azure SQL的用户名和密码,确定
  • 测试链接成功后,就可以用下面的语句复制数据:
-- 替换成你的链接服务器名、Azure库名、源表名,以及本地库、目标表名
INSERT INTO 本地数据库名.dbo.目标表名
SELECT * FROM [链接服务器名].[Azure数据库名].dbo.源表名;

注意事项:

  • 如果本地表和Azure表结构不一样,别用SELECT *,要明确指定字段名,比如SELECT 字段1, 字段2 FROM ...,避免字段不匹配报错
  • 脚本可以保存成SQL文件,或者用SQL Server代理做成定时作业,方便重复执行

方案三:SQL Server复制(适合持续同步)

如果你不止要一次性复制,以后还需要定期把Azure的新数据同步到本地,那用复制功能更合适:

  • 首先确认你的Azure SQL是标准版及以上(基础版不支持复制),然后在Azure门户里开启复制权限
  • 打开SSMS连接到本地服务器,右键「复制」→ 「本地发布」→ 新建发布,选择Azure的数据库,选中要同步的关键表,发布类型选「快照发布」(适合一次性初始化数据),如果需要增量同步,后续可以加「事务发布」
  • 配置订阅:在本地服务器的「本地订阅」里新建订阅,订阅刚才创建的发布,设置同步频率(比如每天一次),完成配置后就会自动同步数据

注意事项:

  • 这个方案配置稍微复杂一点,但一劳永逸,适合长期同步的场景
  • 同样要确保Azure防火墙允许本地服务器的IP访问

内容的提问来源于stack exchange,提问作者DhavalR

火山引擎 最新活动