我正在使用Azure SQL数据库进行我们团队的报告,现在的数据量太大,无法通过单个数据处理(至少我认为是这样,它有2个事实表,每个表中有大约1亿行)。
Azure SQL数据库命名为“operation-db”,Synapse命名为“operation-synapse”。
我想让我的团队的过渡变得尽可能顺利。因此,我打算将所有的表、视图、存储过程和用户定义函数复制到Synapse中。
一旦我完成了,有没有办法将“operation-synapse”重命名为“operation-db”,这样团队就不必去他们的代码库更改数据库的名称?
谢谢!
5条答案
按热度按时间lskq00tm1#
无法通过SQL Server Management Studio重命名SQL池,您将收到以下错误:
Synapse工作区中不支持ALTER DATABASE NAME语句。要更新SQL池的名称,请使用Azure Synapse Portal或Synapse REST API。(Microsoft SQL Server,错误:49978)
然而,REST API列出了一个
move
方法来更改名称:但我没办法让它工作。不重命名你的数据库不应该是一个大问题。您的团队应该对更改连接字符串等感到舒适,这将帮助他们了解他们正在转向具有不同特性的不同产品(Synapse)。
但是,在迁移到Synapse之前,您是否查看过Azure SQL DB中的群集列存储索引?它们是SQL池数据库中的默认索引类型,但在SQL DB中也可用。他们可以将你的数据压缩5- 10倍,所以它可能最终不会那么大。Columnstore非常适合聚合查询,但不太适合点查找,因此在迁移之前考虑一下您的工作负载。
wfypjpf42#
1亿行对synapse来说还不够大。每个分片中的Cci数据将仅具有1个行组(1mil行)。考虑在sql db本身中使用分区或CCI。还有你的使用模式是什么?如果您正在执行点查找和更新,则聚集索引的性能会更好。
nkoocmlb3#
有两种类型的专用SQL池。可以使用ALTER DATABASE MODIFY NAME命令重命名旧的独立或“经典DW”。第二种类型是作为Synapse Workspace一部分的专用SQL池,只能在创建时或从还原点创建新数据库时命名。不支持重命名此类型的DSP。
https://learn.microsoft.com/en-us/rest/api/synapse/sql-pools/rename?tabs=HTTP
文件中概述的局限性:
MODIFY NAME = new_database_name使用指定为new_database_name的名称重命名数据库。“MODIFY NAME”选项在Azure Synapse中有一些支持限制:
这些限制同样适用于REST API:
https://learn.microsoft.com/en-us/rest/api/synapse/sql-pools/rename?tabs=HTTP#code-try-0
实际的限制在这里的主要REST文档中:
https://learn.microsoft.com/en-us/azure/synapse-analytics/sql-data-warehouse/sql-data-warehouse-manage-compute-rest-api
本文中描述的REST API适用于独立的专用SQL池(以前称为SQL DW),不适用于Azure Synapse Analytics工作区中的专用SQL池。有关专门用于Azure Synapse Analytics工作区的REST API的信息,请参阅Azure Synapse Analytics工作区REST API。
我希望这有助于澄清重命名专用SQL池的选项。不支持更改作为Synapse Analytics工作区的一部分创建的专用SQL池的名称。只有创建为独立Azure数据仓库示例的专用SQL池才支持重命名。
cvxl0en24#
您可以使用SSMS GUI轻松重命名Synapse数据库。(我已经在v18.8上试过了)。
只需在对象资源管理器中单击一次数据库名称将其选中,然后按F2键将其重命名。
Synapse服务必须正在运行(即不暂停)以使重命名工作。
5uzkadbs5#
您可以使用T-SQL重命名Synapse数据库。命令如下:
注意您需要连接到master数据库/从master数据库发出命令,否则将无法工作。
该命令在100 GB的数据库上需要30秒,并且有一些注意事项,例如在操作期间不得使用数据库。