12

大規模な .sqlproj プロジェクトがあります。1 つの .sql ファイルに、1 つのテーブル定義があります。

CREATE TABLE [dbo].[TableOne] (
    [ColumnName] UNIQUEIDENTIFIER NULL
);
GO
CREATE UNIQUE CLUSTERED INDEX [TableOneIndex]
  ON [dbo].[TableOne]([ColumnName] ASC;

別の .sql ファイルには、別のテーブル定義があります。

CREATE TABLE [dbo].[TableTwo] (
    [ColumnName] UNIQUEIDENTIFIER NULL
);
GO
CREATE UNIQUE CLUSTERED INDEX [TableOneIndex]
  ON [dbo].[TableTwo]([ColumnName] ASC;

両方のインデックスが と呼ばれることに注意してくださいTableOneIndex。それでも、プロジェクトは正常にビルドされ、正常にデプロイされます。

これはどのように合法になることができますか?

4

3 に答える 3

10

SYS.INDEXそれらはテーブルで同じ名前を持っていますが、それらは完全に異なっていOBJECT_IDます。

を見てくださいsys.tables

  SELECT * FROM
  SYS.TABLES
  WHERE NAME LIKE 'TABLE%'

そして、次のようにします。

  SELECT * FROM SYS.INDEXES 
  WHERE OBJECT_ID IN (245575913
,277576027)

オブジェクト ID は、sys.tablesTableOne および TableTwo に関連するテーブルの ID です。

于 2013-05-20T09:47:24.617 に答える