2011-07-12 17 views
2

クライアントマシンに.NET Framework 4およびSQL Server 2008R2をインストールするwpfアプリケーション用のセットアップファイルを作成しました。C#コードを使用してSQL Server 2008 R2でfilestreamを有効にする方法

私のC#コードでSQLスクリプトを実行する前に、私のマシン上のMicrosoft SQL Sever 2008 R2/Configurationツールでファイルストリームを有効にする必要があります。

私は手動で行うのではなく、C#コードで行う方法が必要です。

私は次のことを試してみました:

は、ページからのTransact SQL(TSQL)

を使用してFILESTREAM機能を有効http://www.mssqltips.com/tip.asp?tip=1838が、それは仕事をdidntの。

ありがとうございました!

+0

『』動作しませんでした - あなたは文字通り何もエラーメッセージなしの診断情報を取得していないでした、とFILESTREAMが無効に残った、またはあなたはSを手に入れました私たちと共有できる情報 –

+0

こんにちは、はい、私は私が使用を実行すると、マスター ゴー EXECます。sp_configure「高度な表示オプション」 GO のEXECのsp_configure filestream_access_level任意のエラーメッセージが表示されますOVERRIDE GO WITH 1 GO RECONFIGUREが、私のファイルストリームがまだ無効になっていませんでし – CodeMonkey

答えて

0

一般に、.netコードを使用してSQL Serverを管理する場合は、SQL Server Management Objectsを参照する必要があります。 DBレベルでのFILESTREAMの有効化をサポートしているかもしれませんが、わかりません。

もしあなたが少なくとも新しいFILESTREAMを作成することができれば、それはapiを通してFileGroupを有効にすることができます。そのMSDNページに例があります。また、あなたがgoogleの場合、いくつかのブログサンプルがあります。smo filestream

1
  1. この関数を呼び出します。 instanceNameのに対応

    private void EnableFileStream(string instanceName) 
    { 
        //sql 2008 - ComputerManagement10, sql2012 - ComputerManagement11 
        string SqlWmiPath = @"\\.\root\Microsoft\SqlServer\ComputerManagement10"; 
    
        string WqlSqlFs = "SELECT * FROM FileStreamSettings WHERE InstanceName='" + instanceName + "'"; 
    
        ManagementScope scope = new ManagementScope(SqlWmiPath); 
        int arch = Environment.Is64BitOperatingSystem ? 64 : 32; 
        scope.Options.Context.Add("__ProviderArchitecture", arch); 
        scope.Connect(); 
    
        WqlObjectQuery wql = new WqlObjectQuery(WqlSqlFs); 
        ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, wql); 
        ManagementObjectCollection moColl = searcher.Get(); 
    
        foreach (ManagementObject m in moColl) 
        { 
         ManagementBaseObject param = m.GetMethodParameters("EnableFileStream"); 
         //0 - off 
         //1 - enable transact sql 
         //2 - enable transact sql and stream acess 
         //3 - enable transact sql and stream acess and remote stream access 
         param["AccessLevel"] = 1; 
    
         param["ShareName"] = instanceName; 
         var output = m.InvokeMethod("EnableFileStream", param, null); 
         if (output != null) 
         { 
          uint retValue = (uint)output.GetPropertyValue("ReturnValue"); 
    
          //analyze return value 
         } 
        } 
    } 
    
  2. 再始動システム・サービス。 instanceNameがの場合、SQLEXPRESSの場合、サービス名は MSSQL $ SQLEXPRESSになります。再起動は、システムコンソールまたは別の方法で行うことができます。

    3.1 SC停止 "MSSQLます$ SQLEXPRESS"

    3.2を待ち、それが停止するまで(サービスの状態をチェックします。SCクエリ "のMSSQL $のSQLEXPRESS"を)..

    3.3 SC開始」 MSSQL $ SQLEXPRESS」

関連する問題