Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何自制身份栏?_Sql Server_Parallel Data Warehouse - Fatal编程技术网

Sql server 如何自制身份栏?

Sql server 如何自制身份栏?,sql-server,parallel-data-warehouse,Sql Server,Parallel Data Warehouse,我们正在将一些进程从允许标识列的Sql Server数据库环境移动到不允许标识列的Sql Server数据库环境。如何在不使用标识构造的情况下有效地为代理主键创建唯一的整数值 至于为什么我们不能使用标识列,微软的并行数据仓库在物理上不同的服务器之间拆分表。Microsoft从PDW中删除了标识功能,因为您必须在所有服务器之间进行通信,才能为分布式表中的每个插入找到新的标识值,这几乎否定了并行点。我想知道为什么您的新环境不允许标识列(并不是说没有好的理由,但我以前从未遇到过) 话虽如此,我能想到的

我们正在将一些进程从允许标识列的Sql Server数据库环境移动到不允许标识列的Sql Server数据库环境。如何在不使用标识构造的情况下有效地为代理主键创建唯一的整数值


至于为什么我们不能使用标识列,微软的并行数据仓库在物理上不同的服务器之间拆分表。Microsoft从PDW中删除了标识功能,因为您必须在所有服务器之间进行通信,才能为分布式表中的每个插入找到新的标识值,这几乎否定了并行点。

我想知道为什么您的新环境不允许标识列(并不是说没有好的理由,但我以前从未遇到过)


话虽如此,我能想到的最佳解决方案是在insert上使用触发器,找到伪标识列的最大值并加1。

在不知道为什么不能使用标识或如何使用标识(例如主键、记录计数、事件序列)的情况下,我不确定是否有人可以推荐特定的替换

也就是说,我认为您希望创建一个序列

SQLServer2012增加了一项功能


较旧版本的SQL Server需要实现这一点,尽管它们与本机标识或序列相比都有缺点。

我使用了一种技术。它并非没有缺点,但它确实可以在没有任何恼人的竞争条件的情况下完成任务。问题是

当它出现时,您期望的音量和频率是多少插入到表中?什么是“不允许标识列的SQL Server数据库环境”?你是说DBA拒绝创建它们吗?如果是的话,你需要新的DBA。数量?假设一天十万个。硬代码:我相信在未来十年里,你会看到很多从标识栏转移的趋势,仅仅因为它要求集中。PDW指南告诉你什么?我假设他们建议使用guid作为主键。