5

SQL Server 2005 でテーブルのスキーマを変更する方法を知っています。

ALTER SCHEMA NewSchama TRANSFER dbo.Table1

しかし、古いスキーマ名を使用するストアド プロシージャを確認および/または変更するにはどうすればよいでしょうか?

申し訳ありません: つまり: ストアド プロシージャの sql にテーブルの古いスキーマ名を持つストアド プロシージャがあります...プロシージャの本体に dbo.Table1 を持つすべてのストアド プロシージャを編集するにはどうすればよいですか? .

4

4 に答える 4

1
  • SSMS で [Tasks] > [Generate Scripts] を使用して、一連の Create Proc スクリプトを提供します。
  • 検索と置換 ( Alt- H) を使用して、'Create' を 'Alter' に変更します。
  • F&を使用Rして「dbo.Table1」を「dbo.Table2」に変更します
  • 次に、( F5) を実行して、影響を受けるすべての SP を変更します。

シンプルだが効果的。

于 2008-09-19T14:46:41.260 に答える
0

スキーマを変更する前にテーブルを右クリックして依存オブジェクトのリストを取得し、テーブルに依存しているものを確認してリストを作成し、それらを変更します。ただし、SQLサーバーが追跡する依存関係を壊す可能性があるため、何かを見逃す可能性が常にあります。

ただし、データベースをファイルにスクリプト化してからテーブル名を検索し、変更が必要なすべてのsprocのリストを作成してから、それらをスクリプトに追加して、のスキーマを変更するのが最善の方法です。テーブル。

于 2008-09-19T12:40:08.817 に答える
0

DECLARE @SearchObject VARCHAR(100)

SET @SearchObject = 'searchable_table_name' -- 'searchable_table_name' を検索したいテーブル名に変更します

SELECT sc.name [検索オブジェクト], so.name [コンテナ オブジェクト],
CASE so.xtype WHEN 'U' THEN 'テーブル' WHEN 'P' THEN 'ストアド プロシージャ' WHEN 'F' THEN 'ユーザー定義関数' ELSE 'その他の END as [コンテナ オブジェクト タイプ]

FROM sysobjects そう

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

WHERE sc.name LIKE '%' + @SearchObject + '%' AND so.xtype IN ('U','P','F') -- U : テーブル , P : ストアド プロシージャ, F: ユーザー定義関数( udf)

ORDER BY [コンテナ オブジェクト] ASC

-- 要求されたテーブル名を含むストアド プロシージャを表示します。

syscomments からテキストを選択 '%from' + @SearchObject + '%' のようなテキスト

(sysobjects から ID を選択し、type='P' および name = '')

-- 特定のストアド プロシージャの内容を表示します (上記で検索)

-- Exec sp_helptext 'DeleteAssetByID'

于 2010-03-05T16:16:39.480 に答える