Dies ist der erste der beiden Teile der "Inside SQL Server 2005" Serie, die von Kalen Delaney geschrieben wurde. Er richtet sich primär an Datenbank-Administratoren, obwohl auch Entwickler von Insiderwissen über Indices und Locking profitieren werden.
Startup Prozeduren werden beim Start von SQL Server ausgeführt. Typische Verwendungszwecke sind zum Beispiel:
Um eine Prozedur als Startup Procedure festzulegen, muß man die Systemprozedur sp_procoption ausführen. Nähere Erläuterungen zur Verwendung dieser Prozedur stehen in BOL.
Startup Prozeduren werden beim Start von SQL Server ausgeführt. Typische Verwendungszwecke sind zum Beispiel:
Um eine Prozedur als Startup Procedure festzulegen, muß man die Systemprozedur sp_procoption ausführen. Nähere Erläuterungen zur Verwendung dieser Prozedur stehen in BOL.
Ja! Aber nur, wenn SQL Server im Single User Modus gestartet wird.
In SQL Server 2000 und früher funktioniert folgendes:
SELECT TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMNPROPERTY(OBJECT_ID(TABLE_SCHEMA+'.'+TABLE_NAME), COLUMN_NAME,'IsIdentity')=1;
SELECT su.name AS TABLE_NAME, so.name AS TABLE_NAME, sc.name AS COLUMN_NAME FROM dbo.syscolumns AS sc JOIN dbo.sysobjects AS so ON sc.id = so.id JOIN dbo.sysusers AS su ON so.uid = su.uid WHERE sc.status & 0x80 = 0x80;
Im SQL Server 2005 sollte man folgendes verwenden:
SELECT su.name AS SCHEMA_NAME, so.name AS TABLE_NAME, sc.name AS COLUMN_NAME FROM sys.columns AS sc JOIN sys.objects AS so ON sc.object_id = so.object_id JOIN sys.schemas su ON su.schema_id = so.schema_id WHERE sc.is_identity = 1;
Jein! Die direkte Syntax SELECT … FROM EXEC myProcedure ist ungültig und liefert einen Fehler. Es gibt aber einen Umweg über einen View und OPENQUERY:
Typisches Einsatzgebiet ist die Implementierung einer eigenen Protokollierfunktionalität, die Änderungen an Tabellen mitschneidet. Die Arbeitsweise ist stets die gleiche, nur die Tabelle ist immer eine andere.