2017-06-07 6 views
0

C#クライアントアプリケーションで使用されるSQL Serverデータベースを継承しました。私は危険であることは十分知っていますが、私はプログラマーではありません。私は前のプログラマーが実際のデータベースで遊ぶのが好きであったことを知っています。その結果、私は孤立したテーブルだと思っています。SSMSからSQL Serverデータベース内のテーブルを無効にする方法

アプリケーション自体は超高使用率ではなく、わずかな時間枠内に存在しない表の例外にも耐えます。私はこれらのテーブルをオフにしたり無効にしたりして、試行錯誤してこれらのテーブルがもう使用されていることを確認したいと思います。

データを完全に削除せずにオフにして、必要に応じてすばやく再度有効にする方法はありますか?または、これらのテーブルが必要かどうかを発見するためのより透明な方法がありますか?

+1

さて、これは非常に強引な方法ですが、代わりにテーブル名のソースコードを検索することはできませんか?すべての機能をテストしていることをどのように知っていますか? *本当に*これをやりたければ、テーブルの名前を変更してください。 – DavidG

+2

テーブルの名前を変更することができます。たぶん ".testing"か何かを名前に付け加えるでしょう。 – itsme86

+2

[データベーステーブルがもはやアクセスされているかどうかを知る方法は? "SELECTトリガー"のようなものをしたい](https://stackoverflow.com/questions/2155594/how-can-i-tell-if-a-database-table-is-being-accessed-anymore-want-something- lik) –

答えて

1

簡単な方法はありません。表は、ストアド・プロシージャとクライアント・アプリケーションからのSQL呼び出しを介してアクセスできます。包括的なアプローチでは、各テーブルを利用できないようにする(コメントの中で名前を変更する)方法を用意して、クライアントアプリケーションで完全回帰テストを実行する必要があります。データベース内のテーブルでこれを行う必要があります。クライアントアプリケーションは、ログインしているユーザー(および関連する権限)、日付、構成などの外部の条件に従って、条件付きでテーブルにアクセスする可能性があります。

SQL Server Profilerは良いツールですが、キャプチャした内容を解析する必要があるため、問題をすべて解決することはできません。

+0

アプリケーションは、実際にクライアントからのストアドプロシージャとSQL呼び出しの両方を使用します。私の目標は、すべてのSQLクエリをストアドプロシージャに移行して一貫性と個人的な正気を確保することです。しかし、まず、既存のクラッタを取り除きたい。私はテーブルの名前を変更するのが良い方法ではなく、小規模で限られた使用法であることを肯定している、おそらく私が一緒に暮らすことができるものです。私は腸が3つのテーブルが死んでいると感じているが、私はテーブルを削除し、最高のために望んでいるだけでフラットアウト快適ではない。 – Residualfail

+1

それは混乱を継承することは決して楽しいことはありません!! –

1

は、新しいDBスキーマを作成し、テストの後に再びそれらを転送し、そのスキーマ

ALTER SCHEMA新しいスキーマ転送dbo.yourテーブル

にテーブルを転送することができます。あなたを除いて誰とDBOSがテーブルに対するselectパーミッションを持っていないように

https://docs.microsoft.com/en-us/sql/t-sql/statements/alter-schema-transact-sql

0

あなたは、権限を変更することができます。 dboまたはsaがテーブルに対してすべての権限を持つことを防ぐことはできません。

テーブルを暗号化することもできます(Encrypting database tables in SQL Server 2008)。実際にはロックされています。

SQL Server Auditを使用して、誰かがデータを読み取るかどうかを確認することもできます。監査は非常に影響の少ない製品であり(SQL Server 2008に付属)、セットアップが非常に簡単で、トリガーとは異なり、選択を監査できます。

関連する問題