8

SQL ServerでデータベースIDを負にすることはできますか?

合計 32767 (32 ビットと 64 ビットの両方) を使用できることはわかっています(最大容量の SQL Server) 。

最初のいくつかのデータベース ID は master、model、msdb、および tempdb 用に予約されており、32767 は非表示のシステム リソース データベースであることがわかっています。

負のデータベース ID を見たことはありませんが、それが不可能であることを確認したいと思います。

4

2 に答える 2

6

要するに、そうすることはできますが、そうなることはほとんどありません。

マスターDBでは、sysdatabasesテーブルのid列は、シード1と増分1のID列として定義されます。つまり、デフォルトでは、SQLServerは作成するすべてのデータベースに常に正のDBIDを割り当てます。

ただし、変更することは可能です。ID列に負のシードと増分を指定できるため、sysdatabasesテーブルのID列を-1、-1にリセットすると、次に作成するデータベースのIDが-1になります。 2など。-1は完全に有効な16ビット整数値であるため、IDフィールドに問題はありません。最大DBIDをチェックすることにより、SQLServerが管理するDBの数を単純にチェックすることに問題がある可能性があります。MSSがそのような愚かな方法でそのチェックを行うことは期待していませんが、奇妙なことが起こっており、数十を超えるDBが存在するインスタンスを見たことがありません。

于 2012-09-13T16:17:40.780 に答える
0

実際には、負の値ではなくID値が不足する可能性があると思われる場合は、intではなくbigintの使用を検討する必要があります。ただし、テーブルで特定の特殊なケースが必要な場合に、それらが使用されることがあります。これらは通常、setidentity_insertonを使用して入力されます。

たとえば、私が働いていた1つの場所では、システムユーザーに対して負のIDが使用されていました。私たちの個人テーブルに入力されたデータは、誰が入力したかによってマークされているため、システムエントリ(インポートなどから)を実際の人が入力したものから簡単に除外でき、データの問題の調査に役立ちます。確かに、idが13856799であるかどうかを簡単に確認できますが、0未満の方が覚えやすいです。

于 2012-09-13T17:21:36.747 に答える