{"id":646,"date":"2007-07-17T20:29:12","date_gmt":"2007-07-17T18:29:12","guid":{"rendered":"http:\/\/www.glorf.it\/blog\/2007\/07\/17\/sql-server\/alles-ueber-mssqlsystemresource-herausfinden"},"modified":"2007-07-17T20:29:12","modified_gmt":"2007-07-17T18:29:12","slug":"alles-ueber-mssqlsystemresource-herausfinden","status":"publish","type":"post","link":"http:\/\/www.glorf.it\/blog\/2007\/07\/17\/sql-talk\/sql-server\/alles-ueber-mssqlsystemresource-herausfinden","title":{"rendered":"Alles &#252;ber mssqlsystemresource herausfinden"},"content":{"rendered":"<h4>Sinn und Zweck<\/h4>\n<p>Die MsSqlSystemResource-Datenbank ist eigentlich eine alte Idee. Auch Sybase f&#252;hrte schon vor etlichen Jahren eine System-Datenbank ein, die den Quellcode aller System-Proceduren (bei MS sind es auch die System-Views) enth&#228;lt, dort hie&#223; sie &quot;SybSystemProcs&quot;. Damit wird der Code von den Daten in der Master-Datenbank getrennt. Das ist beim Patchen oder bei Installation eines Servicepacks n&#252;tzlich. Jetzt kann Microsoft einfach hergehen und bei jedem Update einfach die komplette Datenbank austauschen. Umgekehrt kann man leichter auf einen vorherigen Versionsstand zur&#252;cksetzen. Hotfixes sind damit &quot;deinstallierbar&quot;&#8230;<br \/>\nDazu muss der Dienst gestoppt werden, sie kopieren einfach nur die neuen Dateien hin. <\/p>\n<p>Das wurde n&#246;tig, weil bei diesen Updates immer wieder Abbr&#252;che beim Einspielen der neuen Skripten in die Master-Datenbank auftraten. Au&#223;erdem dauert das Einspielen der Skripte wesentlich l&#228;nger als einfach die Dateien auszutauschen. Dadurch wurde der Update robuster und schneller. Leider ben&#246;tigt der Hotfix damit deutlich mehr Platz&#8230;<\/p>\n<h4>Die inneren Werte<\/h4>\n<p>Neben den sp&#228;rlichen Informationen in den Books-Online zum SQL-Server-2005 zur &quot;<a href=\"http:\/\/technet.microsoft.com\/de-de\/library\/ms190940.aspx\">Ressourcendatenbank<\/a>&quot;, gibt es eine weitere M&#246;glichkeit, wie man sich selber an die Erforschung machen kann.<\/p>\n<p>Die Dateien der Mssqlsystemresource-Datenbank liegen unter &quot;&#x0027;C:\\Programme\\Microsoft SQL Server\\MSSQL.n\\MSSQL\\Data\\mssqlsystemresource.mdf\/ldf&#x0027;&quot;, wobei das &quot;n&quot; von der Installation abh&#228;ngt. Die erste Instanz des SQL-Servers legt sich nach 1, die n&#228;chste nach 2 usw. Dabei z&#228;hlen allerdings nicht nur SQL-Server, sondern auch die Analysis-Services usw. Wenn man die Dateien hat, dann ist eigentlich schon alles geritzt.<\/p>\n<p>Die Idee ist nicht wirklich umwerfend und auch leider schon im <a href=\"http:\/\/weblogs.sqlteam.com\/mladenp\/archive\/2007\/03\/12\/60132.aspx\">Blog von Mladen Prajdic<\/a> beschrieben: Man muss einfach nur die MDF\/LDF unter anderem Namen anh&#228;ngen und schon sieht man alles&#8230;<\/p>\n<p><strong>Vorgehen:<\/strong><\/p>\n<p>Dienst stoppen, Dateien kopieren, z.B. in mssqlsystemresource_.mdf\/ldf im gleichen Verzeichnis, Dienst starten.<\/p>\n<p>Jetzt kann man die DB einfach anh&#228;ngen und sich selber zum Besitzer machen. (Da ich mich generell mit SA anmelde wird er im Beispiel verwendet, obwohl das in dem Fall unn&#246;tig ist.)<\/p>\n<p><code lang=\"sql\">exec sp_attach_db 'mssqlsystemresource2'<br \/>\n\t, &#x0027;C:\\Programme\\Microsoft SQL Server\\MSSQL.1\\MSSQL\\Data\\mssqlsystemresource_.mdf&#x0027;<br \/>\n\t, &#x0027;C:\\Programme\\Microsoft SQL Server\\MSSQL.1\\MSSQL\\Data\\mssqlsystemresource_.ldf&#x0027;<\/p>\n<p>EXEC mssqlsystemresource2..sp_changedbowner @loginame = N&#x0027;sa&#x0027;<\/code><\/p>\n<p>Freundlicherweise wurden die Views und Procedures nicht mit &quot;ENCRYPTION&quot; angelegt. Daher kann man nun alle Definitionen in aller Ruhe ansehen und sogar ver&#228;ndern. Ganz wie fr&#252;her in der guten alten Zeit&#8230; \ud83d\ude09<\/p>\n<p><code lang=\"sql\">select<br \/>\n\tname as object_name,<br \/>\n\ttype as object_type,<br \/>\n\tobject_definition(object_id) as object_definition<br \/>\n\tfrom sys.system_objects<\/code><\/p>\n<h4>Und die echten Tabellen?<\/h4>\n<p>Wenn man die Views und Procedures aufmerksam studiert, dann sieht man, dass immer wieder seltsame Tabellennamen auftauchen, z.B. sys.objects$. Das sind die echten Systemtabellen an die man als Normalsterblicher nicht mehr herankommt&#8230; <\/p>\n","protected":false},"excerpt":{"rendered":"<p>Sinn und Zweck Die MsSqlSystemResource-Datenbank ist eigentlich eine alte Idee. Auch Sybase f&#252;hrte schon vor etlichen Jahren eine System-Datenbank ein, die den Quellcode aller System-Proceduren (bei MS sind es auch die System-Views) enth&#228;lt, dort hie&#223; sie &quot;SybSystemProcs&quot;. Damit wird der Code von den Daten in der Master-Datenbank getrennt. Das ist beim Patchen oder bei Installation [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[16],"tags":[],"_links":{"self":[{"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/posts\/646"}],"collection":[{"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/comments?post=646"}],"version-history":[{"count":0,"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/posts\/646\/revisions"}],"wp:attachment":[{"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/media?parent=646"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/categories?post=646"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/tags?post=646"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}