2008-09-19 10 views
5

Sé cómo cambiar el esquema de una tabla en SQL Server 2005:Cómo cambiar el nombre de esquema de una tabla en todos los procedimientos almacenados

ALTER SCHEMA NewSchama TRANSFER dbo.Table1 

pero ¿cómo puedo comprobar y/o modificar los procedimientos almacenados que utilizan el viejo nombre de esquema?

Lo siento: quiero decir: Hay procedimientos almacenados que tienen el nombre de esquema anterior de la tabla en el sql del procedimiento almacenado ... ¿Cómo puedo editar todos los procedimientos almacenados que tienen el dbo.Table1 en el cuerpo del procedimiento ...

+0

Esta es una refactorización disponible en SSDT aunque todavía necesitaría comprobación/prueba ya que podría omitir referencias en SQL dinámico. –

Respuesta

0

obtener una lista de objetos dependientes haciendo clic derecho sobre la mesa antes de cambiar el esquema y luego mira lo que depende de la tabla, haga una lista y luego cambiar los. Sin embargo, siempre existe la posibilidad de que pierda algo porque es posible romper las dependencias que el servidor SQL rastrea.

Pero la mejor manera sería escribir la base de datos en un archivo y luego buscar el nombre de la tabla, hacer una lista de todos los sprocs donde deba cambiarse y luego agregarlos a la secuencia de comandos para cambiar el esquema de la tabla.

1
  • Utilice Tareas> Generar scripts en SSMS para proporcionar una serie de secuencias de comando Create Proc.
  • utilizar Buscar & Reemplazar (Alt - H) para cambiar 'Crear' para 'Alter'
  • Uso F & R cambiar 'dbo.Table1' a 'dbo.Table2'
  • Luego ejecute (F5) para modificar todos los SP afectados.

simple pero eficaz.

+0

Eso está alterando los nombres de las tablas, la pregunta era cómo alterar los nombres de los esquemas para las tablas ... – jlg

0

DECLARE @SearchObject VARCHAR (100)

SET @SearchObject = 'searchable_table_name' - cambio 'searchable_table_name' al nombre de tabla que desea buscar

sc.name SELECT [Objeto de Búsqueda], so.name [objeto contenedor],
CASE so.xtype CUANDO 'U' y luego 'Tabla' cuando 'P' y luego 'procedimiento almacenado' cuando 'F' y luego 'función definida por el usuario' ELSE 'Otros' END como [Tipo de objeto del contenedor]

DE sysobjects así

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

DONDE sc.name LIKE '%' + @SearchObject + '%' y so.xtype IN ('U ', 'P', 'F') - U: Tabla, P: Procedimiento almacenado, F: funciones definidas por el usuario (UDF)

ORDER BY [objeto contenedor] ASC

- Visualizar los procedimientos almacenados que contienen el nombre de la tabla solicitada.

Seleccionar texto De syscomments Dónde texto como '% de' + @SearchObject + '%'

(SELECT ID De sysobjects Donde type = 'P' y el nombre = '')

- Display el contenido de un procedimiento almacenado específico (que se encuentra a la anterior)

sp_helptext --exec 'DeleteAssetByID'

0

por ejemplo, he creado una tabla de informes, mediante esquema dbo predeterminado será asignado a ella, ahora si quiero para cambiar el esquema de la tabla Informes, abetos temente, voy a crear nuevo esquema de notificación nominal:

CREATE SCHEMA Reporting 

entonces se ejecutará a continuación script para cambiar el esquema de la tabla de informes de DBO para informes:

ALTER SCHEMA Reporting TRANSFER dbo.Reports 

O para una mejor comprensión:

ALTER SCHEMA 'newSchema' TRANSFER 'oldSchema'.'table' 
Cuestiones relacionadas