Inside SQL Server 2005: The Storage Engine

Posted on Sep 2, 2007 von in SQL Server

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.

Ganze Geschichte »

Wie kann ich Startup Prozeduren identifizieren?

Posted on Aug 31, 2007 von in SQL Server

Startup Prozeduren werden beim Start von SQL Server ausgeführt. Typische Verwendungszwecke sind zum Beispiel:

  • das Befüllen von globalen Parameter Tabellen

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.

Ganze Geschichte »

Tags: , ,

Wie kann ich Startup Prozeduren identifizieren?

Posted on Aug 31, 2007 von in SQL Server

Startup Prozeduren werden beim Start von SQL Server ausgeführt. Typische Verwendungszwecke sind zum Beispiel:

  • das Befüllen von globalen Parameter Tabellen

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.

Ganze Geschichte »

Tags: , ,

Gibt es eine Möglichkeit, die Resourcen Datenbank "mssqlsystemresource.mdf" in SSMS anzuzeigen?

Posted on Aug 31, 2007 von in SQL Server

Ja! Aber nur, wenn SQL Server im Single User Modus gestartet wird.

Ganze Geschichte »

Tags:

Wie kann ich programmatisch IDENTITY Spalten in meinen Tabellen identifizieren?

Posted on Aug 31, 2007 von in SQL Server

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; 

Kann man das Ergebnis einer Prozedur in einem SELECT Statement verwenden?

Posted on Aug 31, 2007 von in SQL Server

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:

Ganze Geschichte »

Kann ich einen globalen Trigger für alle Tabellen erzeugen?

Posted on Aug 31, 2007 von in SQL Server

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.

Ganze Geschichte »