我们在Azure Synapse数据库中有许多带有Round Robin
分发的表。由于数据洗牌带来的性能问题,我们希望将其中一些表转换为HASH
分布。
我们已经创建了完成此操作的步骤,其中包括创建一个具有散列分布的新表,然后对该新表执行CTAS
,然后删除旧表并将新表重命名为旧表。表名必须与许多使用这些表的报表视图相同。
但这里的挑战是,CTAS在此过程中只复制数据,而不是GRANTS
和CONSTRAINTS
。
因此,我们希望将任何给定表的GRANTS
和CONSTRAINTS
提取到.sql
文件中,以便在创建新表之后。我们只需运行此SQL脚本并像以前一样准备好GRANTS
和CONSTRAINTS
即可。
我可以通过下面的命令找出某个表上给出了什么GRANTS
:
EXEC sp_table_privileges @table_name = '<table_name>';
但是,无法以可执行的SQL脚本的形式提取这些信息。
有没有办法使用SSMS来实现这一点?这真的会对我们计划中的数据库修改有所帮助。你对如何做到这一点有什么想法吗?
1条答案
按热度按时间8yparm6h1#
您可以使用以下脚本生成所有权限
可以使用不同的系统视图以类似的方式完成约束,但不清楚您具体询问的是哪些约束。