SQL Server

引数一覧

引数内容
–Uログイン ID を指定します。
–Pログイン ID のパスワードを指定します。
–Sサーバー名または接続文字列を指定します。
–Eログイン ID とパスワードを指定する代わりに Windows 認証接続を行います。-Eを –U や –P と同時に使用するとエラーメッセージが表示されます。
–dSQLCMD 起動後に接続するデータベースを指定します。
–q指定されたクエリを実行します。実行終了後は SQLCMD のプロンプトが表示されます。
–Q指定されたクエリを実行します。複数のファイルの指定が可能です。
-tクエリタイムアウトを指定します。
–iTransact-SQL ステートメントが記述されたスクリプトファイルを指定します。複数のファイルの指定が可能です。
–oSQLCMD の出力先のファイルを指定します。指定されない場合は標準出力に出力します。
–vSQLCMD スクリプトで使用される変数を指定します。var = value の形式で指定します。
–A管理者接続モードで接続します。


★月額105円~/容量最大30GB/機能満載! ロリポップ!レンタルサーバー ★

コメント:



(画像の文字列を入力して下さい)

使用例

データベース作成
masterデータベースには重要なシステム情報が保存されるので、ユーザデータは別データベースを作成して、そちらに格納するのが好ましい。

sqlcmd -U sa -P SA-PASSWORD -S localhost\SQLEXPRESS

1> CREATE DATABASE testdb
2> GO



データベース削除
sqlcmd -U sa -P SA-PASSWORD -S localhost\SQLEXPRESS

1> DROP DATABASE testdb
2> GO



データベースの指定
sqlcmd -U sa -P SA-PASSWORD -S localhost\SQLEXPRESS

1> USE testdb
2> GO



スキーマ作成
スキーマてなんじゃ?。データベースは複数のスキーマを含む器であり、スキーマは複数のテーブルを含む器である。具体的な使い方としては、同じ性格のテーブルをグループ化して管理しやすくしたり、グループ化することによりセキュリティを高めたりという事ではないかと想像する。

ちなみに、dboというスキーマがあらかじめ用意されており、明示的に指定しない場合はdbo内にテーブルが作成される。

sqlcmd -U sa -P SA-PASSWORD -S localhost\SQLEXPRESS

1> use testdb
2> GO



3> CREATE SCHEMA testschema
2> GO



スキーマ削除
sqlcmd -U sa -P SA-PASSWORD -S localhost\SQLEXPRESS

1> use testdb
2> GO



3> DROP SCHEMA testschema
2> GO



テーブル作成
スキーマを省略した場合はdboという名称のスキーマ内に作成される。

sqlcmd -U sa -P SA-PASSWORD -S localhost\SQLEXPRESS

1> use testdb
3> CREATE TABLE testschema.testtable (id int)
2> GO



テーブル削除
sqlcmd -U sa -P SA-PASSWORD -S localhost\SQLEXPRESS

1> use testdb
3> DROP TABLE testschema.testtable
2> GO



ログイン作成(SQL Server認証)
sqlcmd -U sa -P SA-PASSWORD -S localhost\SQLEXPRESS

1> USE master
2> CREATE LOGIN testuser WITH PASSWORD = 'TESTUSER-PASSWORD'
3> GO



ログイン削除
sqlcmd -U sa -P SA-PASSWORD -S localhost\SQLEXPRESS

1> USE master
2> DROP LOGIN testuser
3> GO



パスワードの変更
sqlcmd -U testuser -P CURRENT-PASSWORD -Z NEW-PASSWORD -S localhost\SQLEXPRESSユーザー作成
sqlcmd -U sa -P SA-PASSWORD -S localhost\SQLEXPRESS

1> USE testdb
2> CREATE USER testuser FOR LOGIN testuser
3> GO



ユーザー削除
sqlcmd -U sa -P SA-PASSWORD -S localhost\SQLEXPRESS

1> USE testdb
2> DROP USER testuser
3> GO



アクセス権の付与(管理者)
sqlcmd -U sa -P SA-PASSWORD -S localhost\SQLEXPRESS

1> USE testdb
2> GRANT CONTROL ON DATABASE::testdb TO testuser WITH GRANT OPTION
3> GO



アクセス権の付与(ユーザ)
sqlcmd -U sa -P SA-PASSWORD -S localhost\SQLEXPRESS

1> USE testdb
2> GRANT SELECT,INSERT,UPDATE,DELETE ON testtable TO testuser
3> GO



アクセス権の削除
sqlcmd -U sa -P SA-PASSWORD -S localhost\SQLEXPRESS

1> USE testdb
2> REVOKE SELECT,INSERT,UPDATE,DELETE ON testtable FROM testuser
3> GO



接続
sqlcmd

1> :CONNECT localhost\SQLEXpress -U sa -P SA-PASSWORDヘルプを表示

sqlcmd -U sa -P SA-PASSWORD -S localhost\SQLEXPRESS

1> :HELPユーザ一覧

sqlcmd -U sa -P SA-PASSWORD -S localhost\SQLEXPRESS

1> USE master
2> select name from syslogins
3> GO



データベース一覧
sqlcmd -U sa -P SA-PASSWORD -S localhost\SQLEXPRESS

1> select name from sys.databases
2> GO



テーブル一覧
sqlcmd -U sa -P SA-PASSWORD -S localhost\SQLEXPRESS

1> select name from sys.tables
2> GO



テーブル構造を見る
sqlcmd -U sa -P SA-PASSWORD -S localhost\SQLEXPRESS

1> sp_columns 'testtable'
2> GO



バックアップモデル
単純復旧モデル : ログ領域は自動的に削除される。バックアップは必要無い(リストアに利用できない)。

sqlcmd -U sa -P SA-PASSWORD -S localhost\SQLEXPRESS

1> ALTER DATABASE testdb SET RECOVERY SIMPLE
2> GO



完全復旧モデル : ログ領域はバックアップを取るまで削除されない。

sqlcmd -U sa -P SA-PASSWORD -S localhost\SQLEXPRESS

1> ALTER DATABASE testdb SET RECOVERY FULL
2> GO



バックアップ(フル)
sqlcmd -U sa -P SA-PASSWORD -S localhost\SQLEXPRESS

1> BACKUP DATABASE testdb TO DISK = 'D:\backup\testdb_full.bak' WITH INIT
2> GO



バックアップ(差分 : 前回フルバックアップ以降の更新分)
sqlcmd -U sa -P SA-PASSWORD -S localhost\SQLEXPRESS

1> BACKUP DATABASE testdb TO DISK = 'D:\backup\testdb_diff.bak' WITH INIT,DIFFERENTIAL
2> GO



バックアップ(トランザクションログ)
sqlcmd -U sa -P SA-PASSWORD -S localhost\SQLEXPRESS

1> BACKUP LOG testdb TO DISK = 'D:\backup\testdb_log.bak'
2> GO



バックアップ計画
" 月の第一営業日の業務終了後に「バックアップ(フル)」を実行。
" 月の第二営業日~月末営業日の業務終了後に「バックアップ(差分)」を実行。
" 一日の営業時間中に適当な間隔で「バックアップ(トランザクションログ)」を実行。
リストア(フル+差分+ログ)
障害が発生した時点で、アクティブなログ(=ログの末端)のバックアップを試みる
sqlcmd -U sa -P SA-PASSWORD -S localhost\SQLEXPRESS

1> BACKUP LOG testdb TO DISK = 'D:\backup\testdb_log.bak' WITH NORECOVERY
2> GO



上記ではバックアップできない場合は下記のいずれかの方法でバックアップを試みる
sqlcmd -U sa -P SA-PASSWORD -S localhost\SQLEXPRESS

1> BACKUP LOG testdb TO DISK = 'D:\backup\testdb_log.bak' WITH CONTINUE_AFTER_ERROR
2> GO



sqlcmd -U sa -P SA-PASSWORD -S localhost\SQLEXPRESS

1> BACKUP LOG testdb TO DISK = 'D:\backup\testdb_log.bak' WITH NO_TRUNCATE
2> GO



その後、リストアを行う
sqlcmd -U sa -P SA-PASSWORD -S localhost\SQLEXPRESS

1> RESTORE DATABASE testdb FROM DISK = 'D:\backup\testdb_full.bak' WITH NORECOVERY
2> RESTORE DATABASE testdb FROM DISK = 'D:\backup\testdb_diff.bak' WITH NORECOVERY
3> RESTORE DATABASE testdb FROM DISK = 'D:\backup\testdb_log.bak' WITH RECOVERY
4> GO




その他 実際業務で利用する場合は、コマンドをテキストファイルに打ち込んで -i オプションで実行するのが良いと思われる。打ち込んだテキストファイルは設定資料として、ファイル名に日時を入れて管理するとかどうだろう。

sqlcmd -U sa -P SA-PASSWORD -S localhost\SQLExpress -s "," -W -i Hoge.sql
テーブルをCSVファイルにエキスポートする方法
bcp testdb.dbo.testtable out Hoge.csv -U sa -P SA-PASSWORD -S localhost\SQLExpress -c -t "\t"" データベース : testdb

スキーマ : dbo(これが既定値の「スキーマ」。省略可能。)
テーブル : testtable
出力先CSVファイル : out Hoge.csv
ログインユーザ : -U sa
パスワード : -P SA-PASSWORD
接続先ホスト : -S localhost
接続先インスタンス : /SQLExpress(既定のインスタンスに接続する場合は省略可能。)
出力形式 : -c (SJISテキストで出力する。UNICODE(UTF16LE)で出力する場合は -w)
区切り文字 : -t "\t" (タブを指定。)


テーブルをselectしてCSVファイルにエキスポートする方法
bcp "select * from testdb.dbo.testtable" queryout Hoge.csv -U sa -P SA-PASSWORD -S localhost\SQLExpress -c -t "\t"" 抽出クエリ : "select * from testdb.dbo.testtable"

出力先CSVファイル : queryout Hoge.csv
ログインユーザ : -U sa
パスワード : -P SA-PASSWORD
接続先ホスト : -S localhost
接続先インスタンス : /SQLExpress(既定のインスタンスに接続する場合は省略可能。)
出力形式 : -c (SJISテキストで出力する。UNICODE(UTF16LE)で出力する場合は -w)
区切り文字 : -t "\t" (タブを指定。)


CSVファイルをテーブルにインポートする方法
bcp testdb.dbo.testtable in Hoge.csv -U sa -P SA-PASSWORD -S localhost\SQLExpress -c -t "\t"" データベース : testdb

スキーマ : dbo(これが既定値の「スキーマ」。省略可能。)
テーブル : testtable
入力CSVファイル : in Hoge.csv
ログインユーザ : -U sa
パスワード : -P SA-PASSWORD
接続先ホスト : -S localhost
接続先インスタンス : /SQLExpress(既定のインスタンスに接続する場合は省略可能。)
入力形式 : -c (入力CSVがSJISテキストファイルであることの指定。入力がUNICODE(UTF16LE)テキストファイルの場合は -w)
区切り文字 : -t "\t" (タブを指定。)


iディレクトリで複数のポータルサイトにディレクトリ登録

コメント:



(画像の文字列を入力して下さい)

トップ   編集 凍結解除 差分 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2019/12/02 (月) 12:47:35 (1628d)

PCpዾyǗlgĂ܂}WŔ܂z 萔O~ył񂫁z Yahoo yV NTT-X Store

z[y[W ̃NWbgJ[h COiq ӂ邳Ɣ[ COsیI COze