Solche und ähnliche Fragen sind häufig zu beobachten. Die Antwort ist allerdings nicht immer einfach, da es sich hier eigentlich um Zeilenpositionierungsprobleme handelt, die streng genommen einer relationalen Datenbank mit ihrem set-basierten Ansatz widersprechen. Trotzdem gibt es auch hier diverse Lösungen...
Dies hängt eigentlich von der Applikation ab, mit der sich die Benutzer zum SQL Server verbinden. Tatsache ist, dass sysdatabases von jedem Benutzer gelesen werden kann, der sich verbindet. Egal, ob die Applikation nun die Datenbanken zeigt oder nicht, wenn die Benutzer
Vielfach ist es üblich, dynamisches SQL zu verwenden, wenn eine Prozedur für verschiedene Sortierkriterien verwendet werden soll. Dabei kann dieses dynamische SQL relativ einfach vermieden werden.
Nun, erst einmal gibt es keine *IDENTITY* Spalte. IDENTITY ist eine Eigenschaft, die für numerische Spalten definiert werden kann.
Definitiv etwas auf meiner persönlichen SQL Server Wish List. Es wäre schön, wenn man diese Information ähnlich wie HOST_NAME() abfragen könnte.
Die Ermittlung bestimmter Tage taucht in dieser oder jener Form immer mal wieder auf. T-SQL bietet hierfür sehr wirkungsvolle Methoden an:
SELECT
CONVERT(CHAR(6),DATEADD(MONTH, 1, GETDATE()),112)
+
'01' AS 'firstDayofNextMonth'
, CONVERT(CHAR(8),DATEADD(day, -1, CONVERT(CHAR(6),DATEADD(MONTH, 2, GETDATE()),112)
+
'01'),112) AS 'lastDayofNextMonth'
firstDayofNextMonth lastDayofNextMonth
------------------- ------------------
20040701 20040731
(1 row(s) affected)
Ergänzung 17.11.2004: Das Ganze kann aber auch folgendermaßen ausgedrückt werden:
SELECT
DATEADD(MONTH,DATEDIFF(MONTH,30,GETDATE()),30)+1
, DATEADD(MONTH,DATEDIFF(MONTH,30,GETDATE())+1,30)
------------------------- ------------------------
2004-12-01 00:00:00.000 2004-12-31 00:00:00.000
(1 row(s) affected)
Diese Website hat Beispiele für SQL2K und SQL7:
www.users.drew.edu/skass/sql (Homepage von SQL Server MVP Steve Kass)