2009-03-23 17 views
0

新しいクライアントを追加するウェブサイトの管理者アカウントがあります。新しいクライアントが追加されると、アカウントと独自のデータベースが取得されます。Webからサーバー上にデータベースを作成するにはどうすればよいですか?

問題は私の管理アカウントから自分のサーバー上に新しいデータベースを作成できないことです。ローカルで実行する場合は、データベースをローカルに追加できます。私は、サーバーから私のウェブサイトを実行しているサーバーに追加しようとする。しかし、私はいくつかの方法を(ローカル)データベースを追加することができました

CREATE DATABASE permission denied in database 'master'. 

得ます。これは、よりシンプルな作業バージョンの1つです。

tmpConn.ConnectionString = "Data Source=.\\SQLEXPRESS; DATABASE = master;Integrated Security=True;"; 
sqlCreateDBQuery = " CREATE DATABASE " + dbname; 

SqlCommand myCommand = new SqlCommand(sqlCreateDBQuery, tmpConn); 
try 
{ 
    tmpConn.Open(); 
    myCommand.ExecuteNonQuery(); 

} 
catch (System.Exception ex) 
{} 

答えて

0

サービスプロバイダに連絡する必要があります。 (またはサーバーのメンテナー)。

+0

ウェブ上にはまだありません。ただテストサーバーなので、私は現在のサーバーのメンテナーです。サーバーメンテナーとして何ができますか? –

-1

MySQLのアクセス許可を確認してください:あなたの管理者アカウントは、ローカル接続とホストの設定が異なりますか?

+0

これは質問のMySQL接続文字列ではありません。 –

0

データベースの作成とデータベースユーザー権限の作成が必要です。あなたのサービスプロバイダは、これを容易にすることができるはずです。

0

dbnameの値でどのような確認が行われているかは他に何も示唆されていません。そこにスペースがないのは確かですか?それは予約語ではないということですか?それには悪質なコードは含まれていませんか?非常に少なくとも、あなたは括弧でそれを包む必要があります。

sqlCreateDBQuery = String.Format(" CREATE DATABASE [{0}]", dbname); 

私は本当にあなたは、ユーザーがどこかにテキストボックスに直接この名前を入力することができますされていません願っています。最初の入力でプロパティセキュリティを使用していて、これが何らかの共通の "クライアント"データベースから取り戻されたとしても、2次SQLインジェクションの脆弱性に気づいている可能性があります。

の後は、ここでエラーメッセージを確認できます。この場合、問題は、Webユーザーに適切なCREATE権限がないことです。それを修正する必要があり、それを続行する必要があります。現時点に切り替える特別なアカウントを予約する必要があるかもしれません。そのため、アプリケーションは通常、この種の操作を可能にするコンテキストでは動作しません。

+0

これは私のクライアントのページではありません。私はアクセス権のある唯一の人であり、それは非常に特定の名前のリストに由来しています。 –

+0

あなたのマシンが侵害された場合はどうなりますか?それは深いところの防御だ。また、安全でないコードを書くのは習慣の中にあることをお勧めします。 –

3

私は、Sql Serverへの接続に使用しているアカウントには、CREATE DATABASEの権限がないと思われます。あなたはおそらくNetwork Security/ASP.NETを使用してMSSQLに接続する統合セキュリティを使用しています。 sa(または別のsysadmin)資格情報でSql認証を使用するnew connection stringを作成する必要があります。

ああ - ローカルユーザーアカウントで実行されるVisual StudioのWebDev.exe(おそらくMSSQLでsysadminとして設定されている)で実行しているため、ローカルで動作します。

関連する問題