and 2008winform
を使用してアプリケーションを開発しました。今の仕事は、それをクライアントのマシンに実装することです。このアプリケーションを実行するクライアント マシン上でandを作成する最良の方法を探しています。すべてのデータベースのスクリプトを生成しました。そして今、各テーブルまたはストアド プロシージャ スクリプト ファイル (.sql または .txt) を読み取って作成する C# コードを 1 回クリックして、クライアントのマシンにすべてのデータベース オブジェクトを作成したいと考えています。C#
SQL Server
database
tables
stored procedure
objects
3 に答える
1
smo は必要ありませんが、少し醜いです
SqlCommand getDataPath = new SqlCommand("select physical_name from sys.database_files;", baseConnection); // get default path where the sqlserver saves files
string temp = getDataPath.ExecuteScalar().ToString();
temp = temp.Replace(temp.Split('\\').Last(), string.Empty);
StringBuilder sqlScript = new StringBuilder(Scripts.CreateDatabase); //CreateDatabase could be in ressources
///The @@@@ are used to replace the hardcorededpath in your script
sqlScript.Replace("@@@@MAINDATAFILENAME@@@@", string.Concat(temp, "test.mdf"));
sqlScript.Replace("@@@@LOGDATAFILENAME@@@@", string.Concat(temp, "test_log.ldf"));
string[] splittedScript = new string[] { "\r\nGO\r\n" }; //remove GO
string[] commands = sqlScript.ToString().Split(splittedScript,
StringSplitOptions.RemoveEmptyEntries);
SqlCommand cmd = new SqlCommand(command[x], baseConnection);
次に、commands( )内のすべてのコマンドを実行します。
注: 何らかの理由でこれには管理者権限が必要なため、マニフェスト ファイルを作成します。
于 2014-01-16T14:35:29.427 に答える
0
このタスクを完了するには、 SMOを使用する必要があります。通常の ADO.NET のものは、複数ステートメントの実行などについて不平を言うでしょう。SMO と統合してスクリプトを用意すれば、非常に簡単です。
于 2014-01-16T14:32:36.763 に答える
0
Visual Studio は、配置スクリプトを生成するデータベース プロジェクトをサポートしています。また、ゼロからの展開や既存のデータベースのアップグレードも可能です。デプロイは、ビジュアル スタジオまたはビルド サーバー内のビルドの一部として自動化できます。TFS を使用している場合は、データベースをソース管理することもできます。
基本的に、スクリプトをいじる必要はもうありません。
http://msdn.microsoft.com/en-us/library/ff678491(v=vs.100).aspx
于 2014-01-16T14:38:12.837 に答える