😊

SQL Server を最低限覚えたい

2022/07/08に公開約4,000字

SQL Server コマンド覚書

sqlcmd例

  • バージョン確認
sqlcmd -S mssql1 -U admin -PP#ssw0rd -d sample -Q "
select @@version
"
  • データベース作成
sqlcmd -S mssql1 -U admin -PP#ssw0rd -Q 'create database sample'
  • データベース一覧
sqlcmd -S mssql1 -U admin -PP#ssw0rd -Q 'select name,create_date from sys.databases'
  • テーブル一覧
sqlcmd -S mssql1 -U admin -PP#ssw0rd -d sample -Q 'select name from sysobjects where xtype="u"'
  • テーブル作成
sqlcmd -S mssql1 -U admin -PP#ssw0rd -d sample -Q "
create table dbo.Sample_Table (Number nvarchar(10) not null, First_Name nvarchar(50) not null, Last_Name nvarchar(50) null, Last_Update date not null );
"
  • テーブルコピー
sqlcmd -S mssql1 -U admin -PP#ssw0rd -d test1 -Q "
select * into test1.zzz from test1.item1
  • データ挿入
sqlcmd -S mssql1 -U admin -PP#ssw0rd -d sample -Q "
insert into  dbo.Sample_Table values ('100', 'XXX', 'YYY', '2017-10-05' )
"
  • テーブル参照
sqlcmd -S mssql1 -U admin -PP#ssw0rd -d sample -Q "
select * from dbo.Sample_Table
"
  • データ削除
sqlcmd -S mssql1 -U admin -PP#ssw0rd -d sample -Q "
delete from dbo.Sample_Table
"
  • データ切り捨て
sqlcmd -S mssql1 -U admin -PP#ssw0rd -d sample -Q "
truncate table dbo.Sample_Table
"
  • 現在時刻
sqlcmd -S mssql1 -U admin -PP#ssw0rd -d sample -Q "
select sysdatetime()
"
  • 現在のユーザー
sqlcmd -S mssql1 -U admin -PP#ssw0rd -d sample -Q "
select current_user
"
  • SSL暗号化接続かどうか
sqlcmd -S mssql1 -U admin -PP#ssw0rd -d sample -Q "
select ENCRYPT_OPTION from SYS.DM_EXEC_CONNECTIONS where SESSION_ID = @@SPID
"

BCP (bulk copy program)

  • 特定のテーブルをエクスポート
bcp sample.dbo.Sample_Table out test.txt -c -t, -S mssql1 -U admin -PP#ssw0rd
  • 特定のテーブルをインポート
bcp sample.dbo.Sample_Table out test.txt -c -t, -S mssql1 -U admin -PP#ssw0rd
  • 指定のクエリ結果をエクスポート
bcp "select * from sample.dbo.Sample_Table" queryout test.txt -c -t, -S mssql1 -U admin -PP#ssw0rd

ストアドプロシージャ

  • 完全バックアップ to S3
exec msdb.dbo.rds_backup_database
@source_db_name='test1',
@s3_arn_to_backup_to='arn:aws:s3:::xxxxxxxx/backup/sqlserver/sqlserver_test.bak',
@overwrite_S3_backup_file=1;
  • 差分バックアップ to S3
exec msdb.dbo.rds_backup_database
@source_db_name='test1',
@s3_arn_to_backup_to='arn:aws:s3:::xxxxxxxx/backup/sqlserver/sqlserver_test1_dif.bak',
@overwrite_s3_backup_file=1,
@type='DIFFERENTIAL';
  • バックアップ進捗確認
exec msdb.dbo.rds_task_status
exec msdb.dbo.rds_task_status @db_name='sample'
exec msdb.dbo.rds_task_status @db_name='test1'
  • フルリストアでオンライン化
exec msdb.dbo.rds_restore_database
@restore_db_name='test1',
@s3_arn_to_restore_from='arn:aws:s3:::xxxxxxxx/backup/sqlserver/sqlserver_test.bak',
@with_norecovery=0;
  • フルリストア+差分リストアでオンライン化
exec msdb.dbo.rds_restore_database
@restore_db_name='test1',
@s3_arn_to_restore_from='arn:aws:s3:::xxxxxxxx/backup/sqlserver/sqlserver_test.bak',
@with_norecovery=1;

exec msdb.dbo.rds_restore_database
@restore_db_name='test1',
@s3_arn_to_restore_from='arn:aws:s3:::xxxxxxxx/backup/sqlserver/sqlserver_test1_dif.bak',
@type='DIFFERENTIAL',
@with_norecovery=0;

参考資料

  • DBM

https://docs.microsoft.com/ja-jp/sql/database-engine/database-mirroring/database-mirroring-sql-server?view=sql-server-ver15
  • セッション情報

https://docs.microsoft.com/ja-jp/sql/relational-databases/system-dynamic-management-views/sys-dm-exec-sessions-transact-sql?redirectedfrom=MSDN&view=sql-server-ver16
  • AG

https://docs.microsoft.com/ja-jp/sql/database-engine/availability-groups/windows/overview-of-always-on-availability-groups-sql-server?view=sql-server-ver15
  • CDC

https://docs.microsoft.com/ja-jp/sql/relational-databases/track-changes/track-data-changes-sql-server?view=sql-server-ver15#Capture
  • 復旧モデル

https://docs.microsoft.com/ja-jp/sql/relational-databases/backup-restore/recovery-models-sql-server?view=sql-server-ver15
  • トランザクションモデル

https://docs.microsoft.com/ja-jp/sql/relational-databases/logs/the-transaction-log-sql-server?view=sql-server-ver15
  • RDS SQLServer の Audit

https://dev.classmethod.jp/articles/try-rds-for-sqlserver-sql-server-audit/

Discussion

ログインするとコメントできます