verwendetes Datenbanksystem: <MSSQL 2008 Std.>
Hallo ich möchte mit meinem SQL MAnagement Sudio eine Datenbak kopieren.
Problem : Ich möchte nur die Struktur und das Datenbankdiagramm kopieren und nicht die Inhalte.
Ist die überhaupt möglich ?
Grüße
Hallo!
Dann geh doch einfach die Schritte im Assistenten durch. Selbst wenn du irgendwann versehentlich den Kopiervorgang startest, kann man den soweit ich weis abbrechen.
Nobody is perfect. I'm sad, i'm not nobody 🙁
Das Kopieren ist nicht das Problem das geht natürlich !
Aber ich möchte wie oben geschrieben nur die Datenbankstruntur kopieren und nicht die Inhalte.
Hallo,
Rechtsklick auf die gewünschte Datenbank --> Tasks --> Skript generien
über diesen Dialog kannst du dir ein (oder mehrere) SQL-Skript erzeugen, das dein DB-Schema enthält
Hallo!
Eigentlich hatte ich damit auch gemeint, dass der Assistent evtl. an einer Stelle die Möglichkeit bietet, nur die Struktur zu kopieren. Ist aber anscheinend nicht der Fall.
Nobody is perfect. I'm sad, i'm not nobody 🙁
Leider nicht.
Ich kann ja mein Problem genauer erläutern :
Ich habe eine Datenbank mit ca 100 Tabellen die alle mit Foreign Keys miteinander verbunden sind. Diese möchte ich truncaten (Inhalte leeren und Ids zurücksetzen). Da dies aber nicht geht durch die foreign key Einschränkungen, dachte ich mir ich kann nur die struktur kopieren und habe somit eine leere Datenbank bei denen die Ids bei 1 anfangen.
Hallo,
warum dann so umständlich? Einfach alle Foreign Keys deaktivieren, dann Truncaten, dann Foreign Keys wieder aktivieren.
-- Foreign Keys auf allen Tabellen deaktivieren
EXEC sp_msforeachtable "ALTER TABLE ? NOCHECK CONSTRAINT ALL"
-- Foreign Keys auf allen Tabellen aktivieren
EXEC sp_msforeachtable "ALTER TABLE ? CHECK CONSTRAINT ALL"
"Jedes Ding hat drei Seiten, eine positive, eine negative und eine komische." (Karl Valentin)
Hallo, vielen Dank für deine Hilfe, das bringt mich auf jeden fall schon mal weiter.
Leider funktioniert das truncaten immer noch nicht :
Erfolgreich Ausgeführt :
exec sp_MSforeachtable 'ALTER TABLE ? NOCHECK CONSTRAINT ALL'
exec sp_MSforeachtable 'ALTER TABLE ? DISABLE TRIGGER ALL'
exec sp_MSforeachtable 'DELETE ?'
Datenbak jetzt leer aber IDs fangen leider nicht bei 0 an
bei
exec sp_MSforeachtable 'TRUNCATE TABLE ?'
Danke für die Hilfe!!
Um IDs auf Ihren Urspringswert zu setzen reicht es auch aus ein DBCC RESEED anzuwenden.
"Jedes Ding hat drei Seiten, eine positive, eine negative und eine komische." (Karl Valentin)
Hallo eine Frage noch bei der du mir sicher weiterhelfen kannst.
Es hat alles einwandfrei funktioniert bis auf das
exec sp_MSforeachtable 'DELETE ?'
mit auch das Datenbankdiagramm löscht.
Kann ich das umgehen ?
Vielen Dank
Hallo,
du musst dann abfragen, ob der Objekttyp auch eine Tabelle ist. Das geht recht einfach, wenn du
EXEC sp_MSforeachtable 'IF EXISTS(SELECT * FROM sys.objects WHERE type = ''U'' AND object_id = OBJECT_ID(''?'')) DELETE ''?'''
schreibst
"Jedes Ding hat drei Seiten, eine positive, eine negative und eine komische." (Karl Valentin)
Super Vielen Dank das wars.
Merci noch mal für deine Hilfe .
exec sp_MSforeachtable "IF EXISTS(SELECT *
FROM sys.objects
WHERE (type LIKE 'U') AND (object_id = OBJECT_ID('?'))) DELETE ?"