2008-09-19 13 views
5

wiem jak zmienić schematu tabeli w serwerze SQL 2005:Jak zmienić nazwę schematu z tabeli we wszystkich procedurach przechowywanych

ALTER SCHEMA NewSchama TRANSFER dbo.Table1 

Ale w jaki sposób można sprawdzić i/lub zmieniać procedur przechowywanych, które używają stara nazwa schematu?

Niestety: mam na myśli: Istnieją procedury przechowywane, które mają starą nazwę schematu tabeli w sql procedury przechowywanej ... Jak mogę edytować wszystkie procedury przechowywane, które mają dbo.Table1 w ciele procedury ...

+0

Jest to dostępny refactoring w SSDT, ale nadal wymagałby sprawdzenia/testowania, ponieważ mógł nie mieć odniesień w dynamicznym SQL. –

Odpowiedz

0

Uzyskaj listę zależnych obiektów, klikając prawym przyciskiem myszy tabelę przed zmianą schematu, a następnie sprawdź, co jest zależne od tabeli, utwórz listę, a następnie zmień te. Zawsze istnieje jednak możliwość, że czegoś nie przeoczysz, ponieważ możliwe jest przerwanie zależności SQL Server.

Ale najlepszym sposobem byłoby zapisanie bazy danych do pliku, a następnie wyszukiwanie nazwy tabeli, tworzenie listy wszystkich elementów, które należy zmienić, a następnie dodawanie ich do skryptu do zmień schemat tabeli.

1
  • Użyj poleceń> Wygeneruj skrypty w systemie SSMS, aby udostępnić serię skryptów Create Proc.
  • Zastosowanie Znajdź & wymienić (Alt - H) do zmiany 'create' na zmianę ''
  • Zastosowanie F & R zmienić 'dbo.Table1' na 'dbo.Table2'
  • Następnie wykonaj (F5), aby zmodyfikować wszystkie wadliwe SP.

Proste, ale skuteczne.

+0

To zmieniające nazwy tabel, pytanie brzmiało, jak zmienić nazwy schematów tabel. – jlg

0

DECLARE @SearchObject VARCHAR (100)

SET @SearchObject = 'searchable_table_name' - zmiana 'searchable_table_name' do nazwy tabeli, co chcesz wyszukać

SELECT sc.name [Search Object], so.name [Pojemnik Przedmiot]
skrzynki so.xtype gdy „U”, a następnie „Tabela” gdy „P”, a następnie „przechowywane procedura” gdy „C”, a następnie „Użytkownik określonej funkcji” ELSE „Inne” END jako [Typ obiektu kontenera]

Z sysobjects tak

WEWNĘTRZNY Dołącz syscolumns SC so.id = sc.id

GDZIE sc.name LIKE '%' + @SearchObject + '%' I so.xtype W ("U ”, 'P', 'F') - U: Tabela P: procedury przechowywanej, F: funkcje zdefiniowane przez użytkownika (UDF)

zamówienie przez Container obiektu] [ASC

- wyświetlanie procedur przechowywanych które zawierają żądaną nazwę tabeli.

Wybierz tekst z tabeli syscomments Jeżeli tekst jak '%' + @SearchObject z + '%'

(Wybierz ID z sysobjects Gdzie type = 'P' i name = '')

- Pokazać treść konkretnej procedury przechowywanej (znaleziono z góry)

--exec polecenia sp_helptext „DeleteAssetByID”

0

na przykład Stworzyłem Raporty stole, przez domyślny schemat dbo zostaną przypisane do niego, teraz jeśli chcę zmienić schemat tabeli Raporty, pierwsze nio, będę tworzyć nowego schematu o nazwie Raportowanie:

CREATE SCHEMA Reporting 

wtedy będę wykonywać poniżej skrypt do zmiany schematu raportów tabeli z dbo do sprawozdawczym:

ALTER SCHEMA Reporting TRANSFER dbo.Reports 

OR dla lepszego zrozumienia:

ALTER SCHEMA 'newSchema' TRANSFER 'oldSchema'.'table' 
Powiązane problemy