Pergunta

Eu sei como alterar o esquema de uma tabela no SQL Server 2005:

ALTER SCHEMA NewSchama TRANSFER dbo.Table1

Mas como posso verificar e / ou alterar procedimentos armazenados que usam o nome do esquema de idade?

Desculpe: eu quero dizer: Não são procedimentos armazenados que têm o nome do esquema velho da tabela no sql do procedimento armazenado ... Como posso editar todos os procedimentos armazenados que têm o dbo.Table1 no corpo do procedimento ...

Foi útil?

Solução

Obter uma lista de objetos dependentes clicando com o botão direito sobre a mesa antes de alterar o esquema e, em seguida, olhar para o que está dependente da mesa, fazer uma lista e, em seguida, alterar os. Há, no entanto, sempre uma possibilidade de que você vai perder alguma coisa, porque é possível quebrar as dependências faixas de servidor SQL.

Mas a melhor maneira seria fazer o script do banco de dados para fora em um arquivo e, em seguida, fazer uma pesquisa para o nome da tabela, faça uma lista de todos os sprocs onde ele precisa ser alterado e em seguida, adicione os para o script para a mudança o esquema da tabela.

Outras dicas

  • Utilize as Tarefas> Gerar Scripts em SSMS para fornecer uma série de criar scripts Proc.
  • Use Localizar e substituir ( Alt - H ) para a mudança 'Criar' para 'Alter'
  • Use F & R para mudança 'dbo.Table1' para 'dbo.Table2'
  • Em seguida, Executar ( F5 ) para modificar todas as SPs afetados.

Simples, mas eficaz.

DECLARE @SearchObject VARCHAR (100)

SET @SearchObject = 'searchable_table_name' - mudança 'searchable_table_name' para o nome da tabela que você deseja pesquisar

sc.name SELECT [objeto Search], so.name [Object Container],
CASE so.xtype QUANDO 'U' ENTÃO 'Table' QUANDO 'P' ENTÃO 'Stored Procedure' QUANDO 'F', então 'User Defined Function' Else 'Outro' FIM como [Container tipo Object]

FROM sysobjects assim

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

WHERE sc.name LIKE '%' + @SearchObject + '%' E so.xtype IN ( 'U', 'P', 'F') - U: Table, P: Stored Procedure, F: User funções definidas (UDF)

ORDER BY [Container Object] ASC

-. Mostrar os procedimentos armazenados que contêm o nome tabela solicitada

Selecione o texto da syscomments em que o texto como '% de' + @SearchObject + '%'

(id De sysobjects onde tipo = 'P' e name = '')

- Mostrar o conteúdo de um procedimento armazenado específico (encontrado de cima)

- Exec sp_helptext 'DeleteAssetByID'

Por exemplo, eu criei uma relatórios de tabela, pelo esquema dbo padrão será atribuído a ele, agora se eu quiser alterar o esquema da tabela Reports, em primeiro lugar, vou criar novo esquema chamado Relatório:

CREATE SCHEMA Reporting

então eu vou executar abaixo script para alterar o esquema da tabela Relatórios de DBO para Relatórios:

ALTER SCHEMA Reporting TRANSFER dbo.Reports 

ou para melhor entendimento:

ALTER SCHEMA 'newSchema' TRANSFER 'oldSchema'.'table'
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top