0

C#でこのコードを検討してください:

var command = connection.CreateCommand();
command.CommandType = CommandType.StoredProcedure;
command.CommandText = "usp_my_procedure";

このコマンドを実行すると、このストアドプロシージャを実行するデータベースがわかりますSQL Serverか?MySQL

ここでの最良の規則は何ですか(パフォーマンスとセキュリティの両方を考慮して)?するべきか...

  1. データベース名を明示的に指定しますか?
  2. 接続を作成するたびに、 USEコマンドを使用してデフォルトのデータベースを設定しますか?
  3. 現在のデータベースが接続によって設定されていると仮定しますか?(例Database=mydb
  4. 他の?

また、SQL Serverでは、データベースの所有者を明示的に指定するのが最善だと思います。

command.CommandText = "dbo.usp_my_procedure";
4

2 に答える 2

3
objSqlConnection.ChangeDatabase("Database");

また

command.CommandText = "database.dbo.usp_my_procedure";

お役に立てれば

于 2012-11-14T08:41:53.750 に答える
1

1つのデータベースに接続を使用する予定で、それが変更されないことが確実な場合は、USEコマンドを使用するか、接続文字列を使用して、現在のデータベースを1回設定できます。この場合、オブジェクトのフルネームを省略できます-dbo.table1の代わりに書き込みますdb_name.dbo.table1

一部のデータベースのオブジェクトを変更/参照する場合は、ステートメントの前にUSEコマンドを実行するか、フルネームを使用するかを選択できます- db_name.dbo.table1。あなたは自分で質問に答えることができます-どちらがあなたにとって良いですか。

于 2012-11-14T11:22:52.663 に答える