Come modificare il nome dello schema di una tabella in tutte le procedure memorizzate

StackOverflow https://stackoverflow.com/questions/101463

  •  01-07-2019
  •  | 
  •  

Domanda

So come modificare lo schema di una tabella in SQL Server 2005:

ALTER SCHEMA NewSchama TRANSFER dbo.Table1

Ma come posso controllare e/o modificare le procedure memorizzate che utilizzano il vecchio nome dello schema?

Scusa:Intendo:Esistono procedure memorizzate che hanno il vecchio nome dello schema della tabella nell'SQL della procedura memorizzata...Come posso modificare tutte le procedure memorizzate che hanno dbo.Table1 nel corpo della procedura...

È stato utile?

Soluzione

Ottieni un elenco di oggetti dipendenti facendo clic con il pulsante destro del mouse sulla tabella prima di modificare lo schema, quindi osserva cosa dipende dalla tabella, crea un elenco e quindi modificali.Esiste, tuttavia, sempre la possibilità che ti perdi qualcosa perché è possibile interrompere le dipendenze tracciate da SQL Server.

Ma il modo migliore sarebbe quello di scrivere il database in un file e poi fare una ricerca per il nome della tabella, fare un elenco di tutti gli sproc in cui deve essere modificato e quindi aggiungerli allo script per cambiare lo schema di la tavola.

Altri suggerimenti

  • Utilizzare Attività>Genera script in SSMS per fornire una serie di script Crea Proc.
  • Utilizzare Trova e sostituisci (Alt - H) per modificare "Crea" in "Modifica"
  • Utilizzo F & R per modificare 'dbo.Table1' in 'dbo.Table2'
  • Quindi esegui (F5) per modificare tutti gli SP interessati.

Semplice ma efficace.

DICHIARARE @SearchObject VARCHAR(100)

SET @SearchObject = 'searchable_table_name' - cambia 'searchable_table_name' nel nome della tabella in cui desideri cercare

SELECT sc.name [Cerca oggetto], so.name [Oggetto contenitore],
Caso così.xtype quando "u" quindi "tabella" quando "p" quindi "procedura memorizzata" quando "f" quindi "funzione definita dall'utente" altrimenti "altra fine come [tipo di oggetto contenitore

DA sysobjects così

INNER JOIN colonne di sistema sc ON so.id = sc.id

DOVE sc.name LIKE '%' + @SearchObject + '%' AND so.xtype IN ('U','P','F') -- U :Tabella, P:Procedura memorizzata, F:Funzioni definite dall'utente (udf)

ORDINA PER [Oggetto contenitore] ASC

-- Visualizza le procedure memorizzate che contengono il nome della tabella richiesta.

Seleziona testo da commenti di sistema Dove testo come '%from ' + @SearchObject + '%'

(Seleziona id da sysobjects dove tipo='P' e nome = '')

-- Visualizza il contenuto di una procedura memorizzata specifica (trovata dall'alto)

--Exec sp_helptext 'DeleteAssetByID'

Ad esempio, ho creato una tabella Reports, per impostazione predefinita le verrà assegnato lo schema dbo, ora se voglio modificare lo schema della tabella Reports, in primo luogo creerò un nuovo schema denominato Reporting:

CREATE SCHEMA Reporting

quindi eseguirò lo script seguente per modificare lo schema della tabella Reports da dbo a Reporting:

ALTER SCHEMA Reporting TRANSFER dbo.Reports 

OPPURE per una migliore comprensione:

ALTER SCHEMA 'newSchema' TRANSFER 'oldSchema'.'table'
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top