1

and 2008winformを使用してアプリケーションを開発しました。今の仕事は、それをクライアントのマシンに実装することです。このアプリケーションを実行するクライアント マシン上でandを作成する最良の方法を探しています。すべてのデータベースのスクリプトを生成しました。そして今、各テーブルまたはストアド プロシージャ スクリプト ファイル (.sql または .txt) を読み取って作成する C# コードを 1 回クリックして、クライアントのマシンにすべてのデータベース オブジェクトを作成したいと考えています。C#SQL Serverdatabase tablesstored procedureobjects

4

3 に答える 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

http://msdn.microsoft.com/en-us/library/xee70aty.aspx

于 2014-01-16T14:38:12.837 に答える