SSブログ

Access起動時にSQL serverとのODBC接続を自動更新させる

ODBC接続を行うVBAモジュールを作成し、これをAccess2010のマクロ "AutoExec" からcallする

AccessDB.accdb を開き、
作成 > 標準モジュール > VBA の Module1 編集画面で、
VBA のコード(ex. RefreshODBCLink) を記述する

作成 > マクロ > マクロ作成画面で 、
"プロシージャの実行" を選択し、"プロシージャ名" で RefreshODBClink() を入力 > [保存] >
マクロ名を "AutoExec" として保存する


VBAモジュールの例:
----------
Function RefreshODBClink()
    Dim Dbs As DAO.Database
    Dim Tdf As DAO.TableDef
    Dim strODBC As String

    Set Dbs = CurrentDb
    strODBC = "ODBC;DRIVER=SQL Server;UID=uid;PWD=password;LANGUAGE=日本語;DATABASE=dbname;SERVER=servername;"

    ' ODBCLink の再接続
    For Each Tdf In Dbs.TableDefs
        If Tdf.Connect Like "ODBC;*" Then
            Debug.Print "Set Tdf Connect:" & Tdf.Name & ":" & strODBC
            Tdf.Connect = strODBC
            Tdf.RefreshLink
            Tdf.Fields.Refresh
        End If
        DoEvents
    Next Tdf
    Dbs.TableDefs.Refresh

End Function
----------
 
ODBCリンクを作成するVBA
 
(Windows7, SQL Server 2008 R2, ODBC, Access 2010)
 

ODBCリンクを作成するVBA


タグ:SQL ODBC access

SQL Server 2008 データベースのバックアップ job


2つの方法についての備忘録
   SQL Server エージェント job で実行
   .bat を Windowsタスクスケジューラで実行
(メンテナンスプランでの設定は割愛)


SQL Server エージェント job の作成

  "SQL Server Management Studio" を開く > 
  "オブジェクトエクスプローラ" で "SQL Server エージェント" を右クリック > 新規作成 > ジョブ
  "新しいジョブ" ダイアログが開く
    "全般" ページで、
      名前 : 任意の名前を指定
      有効 : チェックする
    "ステップ" ページで、
       [新規作成] > "新しいジョブステップ" ダイアログが開く
         "全般" ページで
           ステップ名 : 任意の名前を指定
           種類 : オペレーティングシステム(CmdExec)
           コマンド : 以下のコマンドを入力
           
     sqlcmd -S [ServerName\MSSQLSERVER] -U [UserName] -P [Password] 
     -Q "BACKUP DATABASE [DatabaseName] TO DISK='[D:\BackupPath\DatabaseName.bak]' WITH INIT"
           
         "詳細設定" ページで
           "成功した場合のアクション" : "成功を報告してジョブを終了する"
           "失敗した場合のアクション" : "失敗を報告してジョブを終了する"
           "履歴にステップ出力を含める" : チェックする
       [OK] > [OK]
    "スケジュール" ページで
       [新規作成] > ジョブを実行するスケジュールを設定する
       [OK]

  作成された job を右クリック > ステップでジョブを開始  として動作を確認する


  上記コマンドで .sql ファイル を外だしにする場合
     以下の内容の script.sql ファイルを作成する

     BACKUP DATABASE [DatabaseName] TO DISK='[D:\BackupPath\DatabaseName.bak]' WITH INIT
     Go

     上記コマンドでは、以下のように .sql ファイルを指定

     sqlcmd -S [ServerName\MSSQLSERVER] -U [UserName] -P [Password] 
     -i '[D:\ScriptPath\]script.sql'



.bat を作成し Windowsタスクスケジューラを設定

  以下の内容で BackupSQL.bat ファイルを作成する

     sqlcmd -S [ServerName\MSSQLSERVER] -U [UserName] -P [Password] 
     -Q "BACKUP DATABASE [DatabaseName] TO DISK='D:\BackupSQL\[DatabaseName.bak]' WITH INIT" > D:\BkupSQL\result.log

  Windowsタスクスケジューラで、ジョブを実行するスケジュールを設定する
 
 
(Windows 2008 R2, SQL Server 2008 R2)
 

SQL server 2008 デタッチ、アタッチでデータベースを移行


移行元のサーバにて "SQL Server Management Studio" を開く > 

  "オブジェクトエクスプローラ" で 移行したいデータベースを右クリック > プロパティ >
  "プロパティ" ダイアログが開く
     "ファイル" ページで、.mdf ファイルのあるパスを確認して [キャンセル]
  移行したいデータベースを右クリック > タスク > デタッチ 

  Windows Explorerで、確認したパスにある

     データファイル(mdf、ndf)、ログ ファイル (ldf) を

  移行先のサーバへコピー

  通常は、移行元、移行先とも以下のような SQL server インスタンス配下になる
     D:\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA


移行先のサーバにて "SQL Server Management Studio" を開く > 

  "オブジェクトエクスプローラ" で "データベース" を右クリック > アタッチ 
  "データベースのアタッチ" ダイアログが開く
     [追加] として、コピーしたファイルを選択して [OK]


デタッチした移行元のデータベースも再びタッチしておく
 
(Windows 2008 R2, SQL Server 2008 R2)
 


SQL server 2008 データベースへのアクセスを制限する(シングルユーザモードに移行)

 
  "SQL Server Management Studio" を開く > 

  "オブジェクトエクスプローラ" で データベースを右クリック > プロパティ >
  "プロパティ" ダイアログが開く
  
  "オプション" ページで、
  状態 > アクセスの制限 で、SINGLE_USER を選択し [OK] とする
 
(Windows Server 2008 R2, SQL Server 2008 R2)
 

SQL Server 2008 バックアップと復元(データベースのサーバ間移動)


データベースの完全バックアップ
  "SQL Server Management Studio" を開く > 

  "オブジェクトエクスプローラ" で データベースを右クリック > タスク > バックアップ >
  "データベースのバックアップ" が開く

  "全般" ページで、
    ソース
      データベース : バックアップ対象データベースを選択
      バックアップの種類 : "完全"
      バックアップコンポーネント : "データベース"
    バックアップセット
      名前/説明 : 任意の名前/説明
      バックアップセットの有効期限 : "期間指定" をチェックし、0 日とする
    バックアップ先
      "ディスク" を選択し、[追加] > (任意の)出力先ファイルを指定 > [OK]
  "オプション" ページで、
    メディアに上書きします
      "既存のメディアセットにバックアップする" を選択し、以下の何れかを選択
        "既存のバックアップセットに追加する"
          -> 1つのファイルにバックアップが追記されていく
             ファイルサイズがバックアップごとに大きくなる
             復元時に、バックアップの復元ポイントを指定できる
        "既存のすべてのバックアップセットを上書きする"
          -> バックアップファイルが上書される
          ※ 手動時は、バックアプ先を明示的に指定するので、
             こちらの選択がよい

  [OK] でバックアップを実行する


データベースの復元
  "オブジェクトエクスプローラ" で データベースを右クリック > タスク > 復元 > データベース >
  "データベースの復元" が開く

  "全般" ページで、
    復元先
      復元先データベース : 復元する先のデータベースを選択
          ※データベースのサーバ間移動などの目的で、既存データベースがなければ、
            あらかじめ新規に作成しておく
    復元用のソース
      "デバイスから" を選択し、バックアップしたファイルを選択
  "オプション" ページで、
    復元オプション : "既存のデータベースを上書きする" をチェック
    復旧状態 : "コミットされていないトランザクションをロールバックして、
                 データベースを使用可能な状態にする" をチェック

  [OK] で復元を実行する

(Windows Server  2008 R2, SQL Server 2008 R2)
 

Sharpoint2010 ディスカッションで編集ダイアログを使用しない方法

ディスカッション=会議室では、投稿/返信における編集時に、
ダイアログボックスが開き、ここで、文書を入力するようになっている。
 
このダイアログボックスは、使い勝手が悪いので、
無効にして、通常のフォームが開くようにするとよい。
 
方法は、ディスカッションのリストビューから、
設定 > ディスカッション掲示板の設定 > 詳細設定 を開く。
 
"ダイアログ ボックスでフォームを開始する"
 
を "いいえ" にして [OK] とすればよい。
 
(Sharepoint Server 2010)

SQL Server Report Service の構成

SQL Server のインストール時に、Reporting Service をインストールしなかった場合、

スタート > Microsoft SQL Server 2008 R2 > 構成ツール > SQL Server インストールセンター 

から追加インストールを行う
インストール後、Reporting Services 構成マネージャーで構成する必要がある

スタート > Microsoft SQL Server 2008 R2 > 構成ツール > Reporting Services 構成マネージャー

サーバ、インスタンスの確認後 [接続]  > サービスが開始されていなければ「開始」

サービスアカウント
   デフォルトで "NETWORK Service" が選択されている

Web サービス URL
   仮想ディレクトリは、デフォルトで "ReportServer" なので、このまま「適用」
   "URL は正常に予約されました。" と表示されれば成功

データベース
   [データベースの変更] > "新しいレポート サーバー データベースを作成する" を選択して [次へ] >
   サーバー名のデフォルト表示を確認して、[接続テスト] で接続確認をして [次へ] >
   データベース名のデフォルト表示を確認して [次へ] >
   認証の種類が "サービス資格情報" であることを確認して [次へ] >
   概要を確認して [次へ]  --->  データベースが構成される > [完了]

レポート マネージャ URL
   仮想ディレクトリは、デフォルトで "Reports" になっているので、このまま [適用] 
   "URL は正常に予約されました。" と表示されれば成功

暗号化キー
   キーをバックアップしておく
 
 
参考:
 
 
(Windows Server 2008 R2、 SQL Server 2008 R2、 Reporting Service) 
 

SQL Server Reporting Service と ReportBuilder で Report を作成する

SQL Server 2008 R2 の Reporting Service を Setup した後に、Report を作成する手順は、以下のようになる。

レポートマネージャで
ロールを作成
データソースの設定
ReportBuilder で
データセットの作成
Reportの作成
レポートを公開
Internet Explorer で
レポートにアクセス


レポートマネージャでロールを作成する
   管理者権限で Internet Explorer を起動し Reportsサーバへアクセスする 
    (※UAC機能により、"ユーザーXX\XXXX に必要なアクセス許可がありません" となるため) 
 
      http://ServerHost/Reports_SQLinstance/   (インスタンスが切ってある場合)

   ホーム > プロパティ もしくは サイトの設定 > セキュリティ
     [新しいロールの割り当て]  名称 と ロール(権限)を指定し [OK]

   ここで作成した ロール を Reports へのアクセス制御に使用する


データソースの設定
   レポートに埋め込まれた接続 = Report Builder で作成
   共有接続 = レポートマネージャ で作成

レポートマネージャでデータソースの作成
   ホーム > コンテンツ > "新しいデータソース" 
     名前:DSdefinition
        "リストビューで非表示にする" をチェック
     データ ソースの種類:  Microsoft SQL server
     接続文字列:
        Data Source=ServerHost;Initial Catalog=DBname
     接続に使用する認証:
        "レポート サーバーに保存され、セキュリティで保護された資格情報" を選択
        ユーザ名 と パスワード を設定
     [OK]

ReportBuilder でデータソースの作成
   ReportBuilder の 新規 > データソース
    > 標準
     名前:DSdefinition
        "レポートに埋め込まれた接続を使用する"
     接続の種類の選択:  Microsoft SQL server
     接続文字列:
        Data Source=ServerHost;Initial Catalog=DBname
    > 資格情報
     "次のユーザ名とパスワードを使用" を選択
        ユーザ名 と パスワード を設定
     [OK]

   ※ 接続文字列 と 資格情報 は、[ビルド] ボタンから指定してもよい

ReportBuilder でデータセットの作成
   ReportBuilder の 新規 > データセット
     名前:DatasetName (接続先のDB名と同じがいいかも)

    レポート埋め込みのデータソースを使用する場合
     データーソース:作成したデータソースを選択

    共有接続のデータソースを使用する場合
     データーソース:
        新規 > 参照 > データソースの選択
           検索対象欄に Reportsサーバ http://ServerHost/Reports/ を指定
           一覧から作成したデータソースを選択 > [開く] > 
           名前 (データソースに付ける名称) を指定して > [OK]

     [クエリデザイナ] > ID/PW 入力 > 
        テーブル/ビュー 一覧から、対象を選択して [テキストとして編集]
        SQL文を "!" で実行結果を見ながら完成させる
        Where区でパラメータ指定したい場合、以下のように記述する
        
           WHERE  Field1 = @P1 and Field2 > @P2 and Field3 like @P3

        [OK] > [OK]

ReportBuilder でReportの作成
   ReportBuilder の 挿入 > テーブル > テーブルの挿入 として
     任意の場所に テーブル を配置する
     後は、必要な項目を Drug & Drop で配置していく

ReportBuilder からレポートを保存(公開)する
   [保存] > "最近使ったサイトとサーバ" で Reportsサーバ を選択、
            名前を付けて [保存]  -->  Reportsサーバに公開される

   [保存] > "マイコンピュータ" で、任意のフォルダに .rdl ファイルを
            バックアップとして [保存] しておく

Internet Explorer で公開したレポートにアクセスする
   
   にアクセスして ホーム からレポートを辿るほか、
   URL でパラメータ渡しにより、直接、絞込み結果をレポートできる


   この場合の注意点として、
   日本語の部分は url エンコードの結果で置き換える必要がある

   例えば、
   http://ServerHost/ReportServer?/FolderName/年間&rc:Parameters=False&p1=<Value>
   は以下のようにする


(Windows Server 2008 R2, SQL Server 2008R2, Report Builder 2.0/3.0)

タグ:SQL

Salesforce Dataloader の Command line 処理の概要

CLIq を使用する場合については、後記、まずは手動で bat を作成す方法を記す

手順は概ね以下となる
  1. Dataloaderのインストール
  2. パスワードの暗号化
  3. process-conf.xmlの作成
  4. sdlファイル(mapping)の作成
  5. MyProcess.batの作成

1. Dataloaderをインストールすると、概ね以下のようにフォルダに展開される
--------
C:\Program Files (x86)\
   salesforce.com\
      Data Loader\
         bin\
            encrypt.bat *
            process.bat *
         Java\
         Licenses\
         samples\
            process-conf.xml *
         dataloader_uninstall.exe
         dataloader-32.0.0-uber.jar
--------
   Export時は、* のファイルを使用、Import時は、加えて .sdlファイルも使用

2. パスワードの暗号化
   encrypt.bat に  -e  オプション指定で、password  を渡すと、暗号化された文字列を返す
   次項の process-conf.xml の中で指定する
--------
C:\Program Files (x86)\salesforce.com\Data Loader\bin>encrypt -e SfdcLoginPassword#12345678 
2014-12-24 14:24:14,186 INFO  [main] security.EncryptionUtil main (EncryptionUti
l.java:365) - 24bd821d828c642e6bd326ad6307c5f2bc84c7a60b21a1f593d685482e

--------

3. process-conf.xmlの作成
   sampleフォルダ配下のものを参考にして、手動でファイルを作成する。 以下は Export の例
--------
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
   <bean id="GetJpUsers" class="com.salesforce.dataloader.process.ProcessRunner" singleton="false">
      <description>csvUserExtract job gets user info from salesforce and saves info into a CSV file."</description>
         <property name="name" value="GetJpUsers"/>
         <property name="configOverrideMap">
            <map>
               <entry key="dataAccess.name" value="C:\DLfolder\SfJpUsers.csv"/>
               <entry key="dataAccess.readUTF8" value="true"/>
               <entry key="dataAccess.type" value="csvWrite"/>
               <entry key="dataAccess.writeUTF8" value="true"/>
               <entry key="process.enableExtractSuccessOutput" value="true"/>
               <entry key="process.enableLastRunOutput" value="true"/>
               <entry key="process.lastRunOutputDirectory" value="C:\DLfolder\log"/>
               <entry key="process.operation" value="extract"/>
               <entry key="process.statusOutputDirectory" value="C:\DLfolder\log"/>
               <entry key="sfdc.bulkApiCheckStatusInterval" value="5000"/>
               <entry key="sfdc.bulkApiSerialMode" value="5000"/>
               <entry key="sfdc.debugMessages" value="false"/>
               <entry key="sfdc.enableRetries" value="true"/>
               <entry key="sfdc.endpoint" value="https://login.salesforce.com"/>
               <entry key="sfdc.entity" value="User"/>
               <entry key="sfdc.extractionRequestSize" value="500"/>
               <entry key="sfdc.extractionSOQL" value="Select Id, Username, Name FROM User WHERE Username like '%.jp%'"/>
               <entry key="sfdc.insertNulls" value="false"/>
               <entry key="sfdc.loadBatchSize" value="200"/>
               <entry key="sfdc.maxRetries" value="3"/>
               <entry key="sfdc.minRetrySleepSecs" value="2"/>
               <entry key="sfdc.noCompression" value="false"/>
               <entry key="sfdc.password" value="4dc6d86a5832053848c9f6184e67400c73bcbc3d653bb9415b9c6085d9c09cb0"/>
               <entry key="sfdc.proxyHost" value="Proxy.MyCompany.co.jp"/>
               <entry key="sfdc.proxyPort" value="8080"/>
               <entry key="sfdc.proxyUsername" value=""/>
               <entry key="sfdc.timeoutSecs" value="60"/>
               <entry key="sfdc.useBulkApi" value="false"/>
               <entry key="sfdc.username" value="bachuser@MyCompany.co.jp"/>
            </map>
         </property>
   </bean>
</beans>
--------

4. sdlファイル(mapping)の作成
   DataloaderのGUIを使って、マッピングファイル(.sdlファイル)を作成しておく
   Importのときに必要となる。前項の process-conf.xml の中で指定する
--------
#Mapping values
#Fri Jun 24 22:57:54 JST 2011
Username=Username
UserRoleId=UserRoleId
LastName=LastName
FirstName=FirstName
Division=Division
ProfileId=ProfileId
Id=Id
Email=Email
--------

5. MyProcess.batの作成
   この batファイル 自体は、どこのフォルダにあってもよいが、
   上記ファイルは、Dataloaderと同じ C:\ のフォルダに配置する。また、パス名は、短縮名で指定する
   この batファイルをタスクスケジューラで定時実行させるようにする
--------
C:
cd C:\PROGRA~2\SALESF~1.COM\DATALO~1\bin\
process.bat C:\ATSUPP~1 GetJpUsers > C:\ATSUPP~1\LOG\executing.log
--------

 

以下には、CLIq を使用した場合について記述する

Dataloader CLIq (Dataloader Command Line Interface)
   = DataloaderをCommandlineから実行するためのファイル一式を自動生成するアプリ

ダウンロードしたファイルをDataloaderのホームディレクトリで解凍する。
cliq.batを実行するとファイル作成のためのダイアログが開き、
案内に従って処理の内容を記述していくと、Data Loader CLIq フォルダの配下に、
指定したプロセス名のフォルダができあがる。このフォルダは以下を保持している。

configフォルダ = Dataloader実行に必要な設定ファイル一式
readフォルダ = SalesforceにImportする連携元のCSVファイル
writeフォルダ = SalesforceからExportした出力先のCSVファイル
MyProcess.bat の実行により、Dataloaderによる処理が実行される
MyProcess.sh は、mac や unix 環境用のもの(最新Dataloaderではサポート対象外?)

C:\Program Files (x86)\
   salesforce.com\
      Data Loader\
         cliq\
         cliq_process\
            process1\
               config\
               read\
               write\
               MyProcess.bat
               MyProcess.sh
            process2\

(Salesforce, Dataloader, CLIq)

 

タグ:sfdc

リモートデスクトップ(RDP)へ接続時、サーバーのイベントログにイベントID 1111 エラーが記録される

ソース : TerminalServices-Printers
イベントID : 1111
プリンター  <プリンタ名>  に必要なドライバー  <ドライバ名>  が認識されません。管理者に問い合わせて
ドライバーをインストールしてから、もう一度ログインしてください。

 

ターミナル サービスの プリンタのリダイレクト機能 により、サーバ上にローカルプリンタがマップされるが、
サーバー側でローカルプリンタのドライバを持っていない場合、プリンタ リダイレクトに失敗しエラーが記録される

 

コントロールパネル > 管理ツール > リモートデスクトップサービス > リモートデスクトップセッションホストの構成

左ペインの RDセッションホストの構成 を選択、
中ペインの 接続一覧から [RDP-Tcp] を右クリック > プロパティ > クライアント設定  を開く
リダイレクト:以下を無効にする の一覧から、以下をチェックする

Windows プリンター
クライアントの通常使うプリンタを既定にする

 

これにより、エラーが記録されなくなる

 

(Windows server 2008 R2, RDP)

 

 


この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。