#author("2023-06-02T16:37:32+09:00","default:irrp","irrp")
#author("2023-06-02T16:37:42+09:00","default:irrp","irrp")
→SQL Server関連

#contents



*ツール一般 [#q1c87f1b]
-[[sqlcmd ユーティリティ - SQL Server | Microsoft Learn>https://learn.microsoft.com/ja-jp/sql/tools/sqlcmd/sqlcmd-utility?view=sql-server-ver16]] 2013.3

-[[DBdoc automated CHM documentation for a SQL Server 2000>http://www.codeproject.com/KB/vb/DBdoc.aspx]]
-[[Schema Comparison Utility:http://www.codeproject.com/useritems/DatabaseCompare.asp]]
-[[Retrieve SQL Server Password:http://www.codeproject.com/useritems/SQLServerPasswords.asp]]
-[[SQL Server 2000 Collation Changer:http://www.codeproject.com/vb/net/ChangeCollation.asp]]
-[[SQL Database Documentor:http://www.codeproject.com/useritems/dbadoc.asp]]
-[[SQL Server 2K Job Monitor:http://www.codeproject.com/useritems/SQLMon.asp]]


*SSMS [#n8f32509]
-[[SSMS でテーブル定義変更した際に「変更の保存が許可されていません」というエラー メッセージが表示される | すなりんブログ>https://kcfran.com/2023/02/11/ssms-error-when-you-save-table/]] 2023.5
--オプションの設定でテーブルの再作成を要する変更を許可する。(開発中は許可しておき、設計が固まったらオフにするのがよい)
--オプションの設定でテーブルの再作成を要する変更を許可する。(開発中は許可しておき、設計が固まったらオンにするのがよい)

-[[SQL Server Management Studio で複数のテーブルを一括削除する方法 - Microsoft SQL Server 入門 - SQL Server 入門>https://sql55.com/sql-server/how-to-delete-multiple-tables-at-once-using-sql-server-management-studio.php]] 2022

-[[SQL Server Management Studio (SSMS) - SQL Server Management Studio (SSMS) | Microsoft Learn>https://learn.microsoft.com/ja-jp/sql/ssms/sql-server-management-studio-ssms?view=sql-server-ver16]] 2022.9

-[[SSMSとは?SQL Serverを管理するための導入手順を解説 | アンドエンジニア>https://and-engineer.com/articles/YT3C9hAAACQAn0Jj]] 2021
--[[SQL Server Management Studio (SSMS) のダウンロード - SQL Server Management Studio (SSMS) | Microsoft Learn>https://learn.microsoft.com/ja-jp/sql/ssms/download-sql-server-management-studio-ssms?view=sql-server-ver16]] 2022.9



*osqlを使ってバッチでバックアップする [#daeef553]
-バッチファイルの例
 osql -S <dbname> -U sa -P <passwd>  -i test.sql
-test.sqlの中身の例
 backup database <dbname> to disk='hoge.bak' with init;
 go
-※osqlの-Qオプションで直接指定してもよい

*BCPによるインポート/エクスポート [#s96d24d7]
-これはバックアップ/リストアとは別の機能なので注意
-コマンドラインからBCPコマンドによる操作が可能
-3つの形式をサポートする
--ネイティブ形式
--テキスト形式(Shift-JIS タブ区切り、行端\n)
--テキスト形式(Unicode)
-レコード単位でのデータ投入が可能
-インポートの場合
 BCP [DB.][OWNER.]TABLE in <ファイルへのパス> <option>
-エクスポートの場合
 BCP [DB.][OWNER.]TABLE out <ファイルへのパス> <option>

-基本構文
 bcp "テーブル名" in または out "テキストファイル名" オプション
--in がDBへのインポート、outがファイルへの吐き出し
--オプション:
 -U SQL Server認証を使ってログインするログインアカウント名の指定
 -P -Uオプションで指定したログインアカウントのパスワード
 -T Windows認証を使ってログインする
 -c 文字データモードで転送
 -n ネイティブデータモード(SQLServerのみが解釈できる形式)で転送
 -t 列区切りを示す記号を指定(デフォルトはタブ:¥t) ¥は半角です
 -r 行区切りを示す記号を指定(デフォルトはタブ:¥n) ¥は半角です
--なのでSQLServer認証すると仮定してCSVファイルをインポートする場合
 bcp "sampleTable" in "test.csv" -c -S DBサーバ -U ログイン -P パスワード -t","
--参考資料:http://msdn2.microsoft.com/ja-jp/library/ms162802.aspx

--フォーマットファイルを使用すると、SQLLoaderのイメージで利用できます。
---たとえば、日付項目(yyyy.mm.dd hh:mm:ss)で出力されているCSVファイルを日付項目(CHAR(8))でインポートしたい場合フォーマットファイル内でコンバート処理してやればいいです。エクスポートの際もフォーマットファイルを通して出力すると加工済みでファイルが出来ます。
--参考資料:http://msdn2.microsoft.com/ja-jp/library/ms189636.aspx

-エラーの例
--このようなエラーになる場合があるが
 SQLState = S1000, NativeError = 0
 Error = [Microsoft][ODBC SQL Server Driver]一括コピー ホストのデータファイルが開けません。
--インポートしようとしているファイル名が1文字間違っていた

*BULK INSERT [#s5c22d44]
-インポートみたいなことができるらしい
-[[MSDNの説明:http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/tsqlref/ts_ba-bz_4fec.asp]]

*Enterprise Manager [#o38132f7]
-復元のときに元のDBと違うDBに復元したいときは「データベースの復元」ダイアログの「全体」タブの「データベースのバックアップを表示」のドロップダウンリストで復元元のDB(バックアップを取ったDB)の名前を指定する。そうしないとRESTOREがエラーになるので注意。

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS