Frage

Ich weiß, wie das Schema einer Tabelle zu ändern, in SQL Server 2005:

ALTER SCHEMA NewSchama TRANSFER dbo.Table1

Aber wie kann ich überprüfen und / oder gespeicherte Prozeduren ändern, die die alten Schemanamen verwenden?

Es tut uns Leid: Ich meine: Es gibt gespeicherte Prozeduren, die das alte Schema Namen der Tabelle in der SQL der gespeicherten Prozedur ... Wie ich alle gespeicherten Prozeduren bearbeiten können, die die dbo.Table1 im Körper des Verfahrens haben ...

War es hilfreich?

Lösung

Hier finden Sie eine Liste der abhängigen Objekte mit einem Rechtsklick auf dem Tisch, bevor Sie das Schema ändern und schauen dann, was auf dem Tisch abhängig ist, eine Liste machen und dann diejenigen ändern. Es ist jedoch immer eine Möglichkeit, dass Sie etwas vermissen, weil es möglich ist, die Abhängigkeiten von SQL Server-Tracks zu brechen.

Aber der beste Weg, um Skript die Datenbank heraus in eine Datei sein würde, und führen Sie dann eine Suche nach dem Tabellennamen, eine Liste aller des sprocs machen, wo es geändert werden muss und dann diejenigen, um das Skript zu ändern hinzufügen das Schema der Tabelle.

Andere Tipps

    Erstellen Proc Scripts
  • Verwenden Sie Aufgaben> Generieren von Skripts in SSMS eine Reihe von zur Verfügung zu stellen.
  • Verwenden Sie Suchen & Ersetzen ( Alt - H ) ändern 'Create' auf 'Alter'
  • Mit F & R ändern 'dbo.Table1' auf 'dbo.Table2'
  • Dann Ausführen ( F5 ), um alle betroffenen SPs zu ändern.

Einfach, aber effektiv.

ERKLÄREN @SearchObject VARCHAR (100)

SET @SearchObject = 'searchable_table_name' - change 'searchable_table_name' auf den Tabellennamen, was Sie suchen möchten

SELECT sc.name [Suchobjekt], so.name [Container Object],
CASE so.xtype WHEN 'U' THEN 'Table' WHEN 'P' THEN 'Stored Procedure' WHEN 'F' THEN 'User Defined Function' ELSE ‚Andere‘ ENDE wie [Containerobjekttyp]

FROM sysobjects so

INNER JOIN syscolumns sc ON so.id = sc.id

WHERE sc.name LIKE '%' + @SearchObject + '%' AND so.xtype IN ( 'U', 'P', 'F') - U: Tabelle, P: Stored Procedure, F: User definierten Funktionen (UDF)

ORDER BY [Container Object] ASC

-. Zeigen Sie die gespeicherten Prozeduren, die den Tabellennamen enthalten angefordert

Wählen Sie Text aus syscomments Wo Text wie '% aus' + @SearchObject + '%'

(Wählen id Von sysobjects Wo type = 'P' und name = '')

- Anzeige der Inhalt eines bestimmten gespeicherten Prozedur (von oben gefunden)

- Exec sp_helptext 'DeleteAssetByID'

Zum Beispiel habe ich eine Tabelle Berichte erstellt haben, werden standardmäßig dbo-Schema zugewiesen werden, wenn ich nun das Schema der Tabelle Berichte ändern möchten, zunächst werde ich neue Schema namens Berichte erstellen:

CREATE SCHEMA Reporting

Dann werde ich unten Skript ausführen, das Schema der Tabelle Berichte von dbo in der Berichterstellung zu ändern:

ALTER SCHEMA Reporting TRANSFER dbo.Reports 

oder zum besseren Verständnis:

ALTER SCHEMA 'newSchema' TRANSFER 'oldSchema'.'table'
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top