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)
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)