あなたのアプリケーションとデータベースが両方ともあなたの友人のPCに配備されている場合、本当にデータベースにアクセスできないようにすることはほとんどありません。
SQL Serverには、権限のあるユーザー(管理者など)からのスキーマビューをブロックする機能はありません。また、マシンを所有している場合、最初に追加されていなくても自分自身をSQL Serverの管理者として表示できます管理役割またはSAアカウントへのアクセスを許可します。ストアドプロシージャにすべてを配置してからSPを暗号化するなどのハードルを設定できますが、それは壁ではなく小さなハードルです。
これはSQL Serverに固有のものではなく、市販のRDBMSにも同じ問題が当てはまります。ボックスを所有している場合は、DBコンテンツにアクセスすることは難しくありません。ソフトウェアベンダーはこれを何十年もやろうとしており、ほとんどの場合、代わりに合法的にIPを放棄し保護しています。それはあなたのための慰めではありませんが、それは現実です。
Azureのようなサービスを使用することが可能な場合は、Azureでアプリケーションをホストすることができ、データベースはAzure SQL DBまたはVM内の通常のSQL Serverにすることができます。フィーチャセットとサーフェスエリアが機能する場合は前者をお勧めします。それはあなたが慣れているSQL Serverのボックス製品と同じではありません。ただし、管理してセキュリティを確保することは、はるかに少ない作業です。 Azureのアプリケーションでは、あなたの友人とクライアントはブラウザ経由でアクセスし、データベースに直接アクセスすることはありません。アプリがローカルにあなたの友人やクライアントのマシンにインストールされていても、データにしかアクセスできないようにアプリケーションを設計するのは簡単です。
認証を使用してWebサービスの背後にデータベースを隠す必要があります。クライアントからデータベースに直接話をしないでください。 – SLaks
データベースオブジェクトのいくつかを暗号化することができますが、一部に管理者権限がある場合は、暗号化を解除する方法もあります。あなたはデータベース管理者からものを隠すことはできません。 – FLICKER
1. Webサービスを使用することで、クライアントからデータベースファイルを隠すことができません。 2. SQL 2014+バージョンで使用可能な暗号化/復号化オプション 私は2008 R2を使用しています。 – user3260083