Overblog
Folge diesem Blog Administration + Create my blog
Blog von Olaf Helper

From “Oslo” to SQL Server Modeling

15. November 2009 , Geschrieben von Olaf Helper Veröffentlicht in #MSSQL

Wie Douglas Proudy in seinem Blog verkündet, wird aus "Oslo" nun als finaller Name "Sql Server Modelling.

Siehe auch:

Developer.Com: Building Microsoft Oslo Models
Newsgroup: Mircosoft Sql Server Modeling
Download: Mircosoft "Oslo" - May 2009 CTP
Beispiele: SQL Server Modeling CTP Samples
Microsoft Data Plattform

Weiterlesen

Open Source Business Intelligence Day 2009

14. November 2009 , Geschrieben von Olaf Helper Veröffentlicht in #Event

Am 01. Dezember findet auf Schloß Romrod das erst mal die "Open Source Business Intelligence Day 2009" statt.
Thematisch geht es um Datenbanken und Data Warehouses, Datenintegration, ETL und Datenqualität, OLAP und Reporting, Data Mining und Predictive Analytics.

Weiterlesen

Microsoft Sql Azure und SSMS 2008 R2 November CTP

13. November 2009 , Geschrieben von Olaf Helper Veröffentlicht in #MSSQL

Bis hin zur letzen CTP Version Microsoft Sql Server 2008 R2 August CTP beschränkte sich die Unterstützung durch das SSMS (Sql Server Management Studio) darauf, dass man sich für eine „Abfrage“ (Query) mit einer Sql Azure Datenbank verbinden konnte. Eine Verbindung über den „Object Explorer“ ging nicht, wie ich schon mal berichtete.

Mit der Sql Server 2008 R2 November CTP hat sich das nun geändert, dort unterstützt SSMS auch Sql Azure Verbindungen, wenn auch nicht vollständig.

Man kann, obwohl eine Connection weiterhin auf eine Datenbank beschränkt ist, die [master] Datenbank einsehen und bekommt nun auch System-View angezeigt.

Es wird auch ein Node für die Replikation angezeigt, aber wenn man die anklickt, bekommt man die Meldung, dass die Funktion in der Version „10.25“ nicht unterstützt wird; aber das kommt schon noch.

Weiterlesen

CheckDB mit auswertbarem Ergebnis

13. November 2009 , Geschrieben von Olaf Helper Veröffentlicht in #T-SQL

Zu den regelmäßigen und wichtigsten Wartungsarbeiten eines DBA (Database Administrator) gehört das Ausführen aller Datenbanken mittels DBCC CHECKDB(0);, um sie auf Konsistenz und Fehlerfreiheit zu überprüfen.

Das Problem ist nur, das je komplexer die Datenbank ist, so umfangreicher das Protokoll als Ergebnis ist. Diese Ergebnisliste durchzusehen ist aufwendig und es kommt leicht vor, dass man wichtige Meldungen übersieht. Da wäre es doch besser, wenn man das Protokoll auf bestimmte Ergebnisse hin selektieren kann.

Das kann man mit dem folgenden Script, es schreibt das ResultSet in eine temporäre Tabelle und selektiert daraus die wichtigsten Eckdaten und kumulierte Werte.

Das wäre in abgewandelter Form eine gute Basis für einen „benutzerdefinierten Report“ in SSMS; muss ich aber noch dran arbeiten.

Ebenso wäre interessant, eine History-Tabelle zu verwenden, um den Datenbank-Status zeitlich zu protokollieren; schaden kann es jedenfalls nicht.

 

 -- Für MS SQL Server 2005 
 -- CheckDB für die aktuelle Datenbank ausführen und 
 -- auswerten (Status-Übersicht und Details). 
 -- Die Mindest-Stati Werte können konfiguriert werden. 
 DECLARE @MinState int, @MinStatus int, @MinLevel int 
   
 SET @MinState = 1; 
 SET @MinStatus = 0 
 SET @MinLevel = 10; 
   
 -- Temporäre Tabelle für das CheckDB Ergebnis 
 CREATE TABLE #CheckDB 
  ([Error] int, [Level] int, [State] int,  
  [MessageText] varchar(7000), [RepairLevel] int, [Status] int, 
  [DbId] int, [ObjectID] int, [IndexId] int, [PartitionId] int, 
  [AllocUnitId] int, [File] int, [Page] int, [Slot] int,  
  [RefFile] int, [RefPage] int, [RefSlot] int, [Allocation] int); 
   
 -- CheckDB ausführen und Ergebnis in die TempTabelle 
 INSERT INTO #CheckDB 
  ([Error], [Level], [State], [MessageText], [RepairLevel],  
  [Status], [DbId], [ObjectID], [IndexId], [PartitionId], 
  [AllocUnitId], [File], [Page], [Slot], [RefFile],  
  [RefPage], [RefSlot], [Allocation]) 
 EXEC ('DBCC CHECKDB(0) WITH TABLERESULTS'); 
   
 -- Die schließende Meldung mit der Zusammenfassung 
 SELECT [MessageText] 
 FROM #CheckDB 
 WHERE [Error] = 8989; 
   
 -- Übersicht mit Anzahl je Stati 
 SELECT CDB.Error, CDB.Level, CDB.State, CDB.Status, 
  CDB.RepairLevel, COUNT(*) AS CountOccurence 
 FROM #CheckDB AS CDB 
 WHERE CDB.State >= @MinState 
  AND CDB.Status >= @MinStatus 
  AND CDB.Level >= @MinLevel 
 GROUP BY CDB.Error, CDB.Level, CDB.State, 
  CDB.Status, CDB.RepairLevel; 
   
 --Ergebnis-Details selektieren 
 SELECT OBJ.name AS ObjName, OBJ.type_desc AS ObjType, 
  IDX.Name AS IndexName, 
  ALU.type_desc AS AllocationType, 
  CDB.Error, CDB.Level, CDB.State, CDB.Status, 
  CDB.RepairLevel, MessageText 
 FROM #CheckDB AS CDB 
  LEFT JOIN sys.objects AS OBJ 
  ON CDB.ObjectId = OBJ.object_id 
  LEFT JOIN sys.indexes AS IDX 
  ON CDB.ObjectId = IDX.object_id 
  AND CDB.IndexID = IDX.index_id 
  LEFT JOIN sys.allocation_units AS ALU 
  ON CDB.AllocUnitId = ALU.allocation_unit_id 
 WHERE CDB.State >= @MinState 
  AND CDB.Status >= @MinStatus 
  AND CDB.Level >= @MinLevel 
 ORDER BY ObjType, ObjName, IndexName; 
 GO 
   
 -- Aufräumen 
 DROP TABLE #CheckDB; 
 GO 
Weiterlesen
Weiterlesen

Download Links für Sql Server 2008 R2 November CTP

11. November 2009 , Geschrieben von Olaf Helper Veröffentlicht in #Download MSSQL

Also, bei mir funktioniert der Download über den Link mit dem Standard Download Manager weiterhin nicht.

Aber mit einem Manager, der auch funktioniert wie FDM, kann man über die Links die November CTP doch herunter laden.

Intel x64 (64-bit) English 1.39 GB
http://care.dlservice.microsoft.com/download/7/B/4/7B4A1F68-4D05-42C1-8982-E5CD8492C6FA/SQLFULL_x64_ENU.exe


Intel x86 (32-bit) English 1.26 GB
http://care.dlservice.microsoft.com/download/7/B/4/7B4A1F68-4D05-42C1-8982-E5CD8492C6FA/SQLFULL_x86_ENU.exe

Weiterlesen

Microsoft® SQL Server® 2008 R2 November Community Technology Preview - Express Edition

11. November 2009 , Geschrieben von Olaf Helper Veröffentlicht in #Download MSSQL

Seit heute 11.11.2009 ab ungefähr 18:00 Uhr (als MS in USA auch anfing zu arbeiten) ist der Download-Link für die November CTP auch für Nicht-Subscriber freigeschaltet. Wenn man dem folgt, wird zunächst ein Download Manager installiert und dann ... tun sich nichts mehr, jedenfalls nicht auf meinem Rechner.

Zumindest gibt es die Microsoft® SQL Server® 2008 R2 November Community Technology Preview - Express Edition
direkt über das Microsoft Download Center; ohne irgend einen Download Manager.

Weiterlesen

Sperren und die betroffenen Objekte ermitteln

11. November 2009 , Geschrieben von Olaf Helper Veröffentlicht in #T-SQL

Das bei DML Aktionen Sperren entstehen, weiß jeder. Wenn man sich in nicht das gerade einfache & trockene Thema einliest und seine Daten kennt, kann in etwa abschätzen, wann welche Sperren entstehen.

Im alten Aktivitätsmonitor oder mit der mittlerweile abgekündigten System Stored Procedure EXEC sp_lock kann man sich die Sperren anzeigen, allerdings ist die Auskunft nicht so informativ.

Über die DMV des Microsoft SQL Server 2005 kann man mehr Informationen ermitteln, wie z.B. auf welche Objekte Sperren liegen.

Interessant ist es dann auch mal mit den unterschiedlichen Isolation Levels oder Table-Hints zu experimentieren. Oder zu sehen, welche weitere Sperren durch ForeignKey Constraints oder History-Trigger entstehen. Zum Experimentieren startet man einfach eine explizite Transaktion, führt das DML Statement aus, wartet aber mit dem Commit. Dann kann man ich Ruhe die Sperren selektieren und committed erst dann. Das sollte aber tunlichst nur auf Test-Systemen machen, sonst gilt: Transaktionen so kurz wie nur irgend möglich.

Beispiel:

 

 USE [AdventureWorks2005] 
 GO 
   
 BEGIN TRANSACTION; 
   
 UPDATE Person.Person WITH (RowLock)  
 -- oder PagLock, TabLock, TabLockX 
 SET FirstName = RTRIM(FirstName) 
 WHERE BusinessEntityID = 1; 
   
 -- Mit dem Commit warten; 
 -- erst die Sperren selektieren 
 COMMIT TRANSACTION; 

 

Hier ein Beispiel für die Selektion der Sperren und deren Daten; wenn es interessiert, kann weitere Felder der Tabellen mit selektieren:

 

 -- Ermitteln aller Sperren einer Datenbank mit den 
 -- Daten der betroffenen Objekte für Sql Server 2005 
 SELECT DB.name AS DatabaseName 
  ,TL.request_owner_type AS RequestType 
  ,TL.request_status AS RequestStatus 
  ,TL.request_mode AS RequestMode  
  ,ES.session_id AS SPID 
  ,ES.login_name AS LoginName 
  ,ES.status as SessionStatus 
  ,TL.resource_type AS ResourceType 
  ,TL.resource_description AS ResourceDescription 
  ,COALESCE(SO.name, PO.name, DB.name) AS ObjectName 
  ,COALESCE(SO.type_desc, PO.type_desc, 'DATABASE') AS ObjectType 
  ,IX.name as IndexName 
  ,OWT.wait_type AS OsWaitType 
  ,OT.task_state AS OsTaskState 
  ,OT.pending_io_count AS OsTaskPendingIo 
 FROM sys.dm_tran_locks AS TL 
  INNER JOIN sys.databases AS DB 
  ON TL.resource_database_id = DB.database_id 
  INNER JOIN sys.dm_exec_sessions AS ES 
  ON TL.request_session_id = ES.session_id 
  LEFT JOIN sys.dm_os_waiting_tasks AS OWT 
   ON TL.lock_owner_address = OWT.resource_address 
  LEFT JOIN sys.dm_os_tasks AS OT 
  ON ES.session_id = OT.session_id 
  LEFT JOIN sys.objects AS SO 
  ON TL.resource_associated_entity_id = SO.object_id 
  AND TL.resource_type = 'OBJECT' 
  LEFT JOIN sys.partitions AS PT 
  ON TL.resource_associated_entity_id = PT.hobt_id 
  AND TL.resource_type IN ('PAGE', 'KEY', 'RID', 'HOBT') 
  LEFT JOIN sys.objects AS PO 
  ON PT.object_id = PO.object_id 
  LEFT JOIN sys.indexes AS IX 
  ON PT.index_id = IX.index_id 
  AND PT.object_id = IX.object_id 
 WHERE 1 = 1 
  -- Optimale Filter; einfach entkommentieren 
  --AND TL.resource_database_id = DB_ID() -- Nur aktuelle DB betrachten 
  --AND ES.status <> 'sleeping' -- Keine schlafende Prozesse 
  --AND SO.type_desc = 'USER_TABLE' -- Nur Sperren auf Tabelle 
  --AND SO.name = 'Persons' -- Nur zu einem Objekt 
  --AND TL.request_mode LIKE '%X'  -- Nur exklusive Locks 
 ORDER BY DB.name, ObjectName, ResourceType 
  ,IndexName, ES.session_id 
Weiterlesen

AdventureWorks 2008R2 November CTP

11. November 2009 , Geschrieben von Olaf Helper Veröffentlicht in #Download MSSQL

Passend zur neuen November CTP des Sql Server 2008R2 gibt es bei CodePlex die aktualisierten AdventureWorks Projekte & Datenbanken.

Die Änderungen können im Blog von bonniefe nachgelesen werden.

Weiterlesen

MS SQL Server 2008 R2 Community Technology Preview November 2009

10. November 2009 , Geschrieben von Olaf Helper Veröffentlicht in #Download MSSQL

Seit heute können MSDN und TechNet Subscriber die Microsoft SQL Server 2008 R2 Community Technology Preview November 2009 herunter laden; alle anderen erst ab morgen, den 11.11.2009 (Helau & Alaf).


Was sich gegenüber der August CTP geändert hat, kann man im 6seitigen Dokument
What's New in SQL Server 2008 R2 November Community Technology Preview (CTP) nachlesen.

Passend dazu gibt es die aktualisierte BOL „SQL Server 2008 R2 Books Online Community Technology Preview November 2009“.

Weiterlesen