sql >> データベース >  >> RDS >> Sqlserver

スクリプトとストアドプロシージャを壊さずに列の名前を変更する

    さて、このタイプの「安全な名前変更」を約束しているサードパーティのツールがたくさんあります。無料のものとそうでないものがあります。

    • ApexSQLには無料ツール があります そのためには、MWillemse として 彼の答えに書いた、
    • RedGateには、SQLPrompt という商用ツールがあります。 安全な名前変更機能もありますが、無料にはほど遠いです。
    • Microsoftには、SQLServerデータツール (または短いバージョンではSSDT)、 Dan Guzman 彼のコメントに書いた。

    私はその特定のタスクのためにこれらの特定のツールを試したことがないと言わざるを得ませんが、SSDTとRedGateの製品のいくつかについてはある程度の経験があり、非常に優れたツールだと思います。 ApexSQLについては何も知りません。

    もう1つのオプションは、自分でSQLスクリプトを作成することですが、開始する前に考慮すべきことがいくつかあります。

    • SQLサーバーの外部からテーブルに直接アクセスできますか?つまり、一部のソフトウェアがそのテーブルでSQLステートメントを直接実行している可能性はありますか?その場合、その列の名前を変更すると壊れてしまう可能性があり、この状況ではSQLツールは役に立ちません。
    • SQLスクリプトのスキルは本当に優れていますか?私は自分自身がSQLServerにかなり慣れていると思いますが、そのようなスクリプトを書くことは私のスキルを超えていると思います。それが不可能というわけではありませんが、無料で手に入れることができるようになるには、おそらく時間と労力がかかりすぎるでしょう。

    自分で書くことにした場合は、そのタスクに役立つ可能性のある記事がいくつかあります。

    まず、sys.sql_expression_dependencies のMicrosoft公式ドキュメント 。
    次に、SQLServerオブジェクトの依存関係を見つけるためのさまざまな方法 これは、13年の経験を持つDBAによって作成されたものであり、最後になりましたが、関連する質問 StackExchangeのデータベース管理者のWebサイトにあります。

    もちろん、Gordon Linoffがコメントで提案した安全な方法を使用することも、回答で提案されたdestination-dataのような同義語を使用することもできますが、すべての列の依存関係を手動で変更する必要があります。 、それはあなたが避けたいものです。



    1. 多対多の関係をモデル化するための最良の方法

    2. promiseを使用したoracledbチェーンSQL呼び出し

    3. エラーメッセージ文字列リテラルが終了していません

    4. CLOBからCHARまたはBLOBからRAWへの変換にはバッファが小さすぎます