Microsoft SQL Server

Mirosoft SQL Server Tips

2022.06.06 必要なファイルダウンロードできませんでした

SQL Server をサイレントインストールしようと考え、以前成功した方法で行ったところ、次のエラーが発生しました。

---------------------------
次のエラーが発生したため、SQL Server インストーラー を続行できません。

必要なファイルをダウンロードできませんでした。インストーラーのバージョンがサポートされなくなっている可能性があります。ダウンロード サイトからもう一度ダウンロードしてください。
---------------------------

保存しておいたSQL2019-SSEI-Expr.exe が更新されて古くなっていたことが原因のようです。あたらにダウンロードして実行したところ、成功しました。

2022.06.04 SQL Server 2019 の環境に SQL Server 2017 をインストール

SQL Server 2019 の環境に SQL Server 2017 をインストールを試してみた。

1. SQL Server 2019 をインストール。インスタンス名は MSSQLSERVER とした。

2. SSMS をインストールし、MSSQLSERVER に接続し、バージョンを確認 (select @@version) すると、SQL Server 2019 が表示された。

3. SQL Server 2017 をインストール。インスタンス名は MSSQLSERVER とした。同じインスタンスが存在しているため、エラーとなりインストールに失敗した。

4. SQL Server 2017 をインストール。インスタンス名は SQLEXPRESS とした。

5. SSMS から SQLEXPRESS に接続し、バージョンを確認 (select @@version) すると、SQL Server 2017 が表示された。

2022.04.26 コマンドプロンプトから SQL を実行する

Windows のコマンドプロンプトから SQL を実行するには sqlcmd を使用します。 データベース DB_A の テーブル TBL_A の COL_A 列をアップデートするには、以下のコマンドを実行します。 sqlcmd -S localhost -d DB_A -Q "update TBL_A set COL_A = 'TEST' where COL_B = '1'"

2020.04.22 SQL Server 構成マネージャが見つからない

通常はスタートメニューにあるのですが、発見できないことがあります。 この場合は、SQLServerManager*.msc でファイルを検索します。C:\Windows\System32 に存在します。次の通りファイル名のバージョンが違います。

  • SQL Server 2014 : SQLServerManager12.msc
  • SQL Server 2017 : SQLServerManager14.msc
  • SQL Server 2019 : SQLServerManager15.msc

2020.04.21 マルチユーザーとシングルユーザーモードの切り替え

マルチユーザーとシングルユーザーモードの切り替えは以下の方法で行います。

  1. SQL Server Management Studio で SQL Server に接続します。
  2. データベースのプロパティを開きます。
  3. オプションタブを開きます。
  4. アクセスの制限で、MULTI_USER / SINGLE_USER を切り替えます。
  5. プロパティを閉じます。

2022.04.20 SQL Server 起動不能

SQL Server 2017 で次のエラーが発生して起動不能となりました。 An error occurred while processing the log for database. If possible, restore from backup. If a backup is not available, it might be necessary to rebuild the log. ログを再構築するにも SQL Server に接続できないと意味がありません。また仮に master データベースをバックアップしていても restore コマンドは実行できないのではないか。 調べてみると、セットアッププログラムからシステムデータベース全般の再構築ができることが判明しました。l Setup /QUIET /ACTION=REBUILDDATABASE /INSTANCENAME=MSSQLSERVER /SQLSYSADMINACCOUNTS=sa /SAPWD=P@ssword ところがこれを実行すると、次のエラーが発生しました。不思議... Windows アカウント sa は存在しないため、SQL Server のシステム管理者として準備できません。 とりあえず、sa ユーザーを管理者として作成してから、もう一度 Setup を実行すると無事復旧しました。 システムデータベースの内容はクリアされるので、実際のデータが入っているデータベースは *.bak ファイルから復元しました。

2022.04.19 データベースのバックアップの復元

SQL Server に対して、Restore コマンドを使って復元する際、データベースにロックがかかって復元できないことが度々発生します。 SQL Server Management Studio から復元する際には、ロックを解除するチェックがありますが、コマンドからだとその機能がないようです。 そこで、思い切って、SQL Server を一度再起動して復元すると確実にうまくいきます。そのためのコマンドは次の通りです。 net stop "MSSQLSERVER" net start "MSSQLSERVER" sqlcmd -S TestServer -Q "RESTORE DATABASE TestDB FROM DISK='%~dp0TestDB.bak' WITH RECOVERY, MOVE 'TestDB' TO 'C:\SQLDB\TestDB.mdf', MOVE 'TestDB_log' TO 'C:\SQLDB\TestDB_log.ldf'" ~dp0 はカレントディレクトリを指しますが、復元元の *.bak ファイルを保存しているディレクトリに対して、NT Service.MSSQLSERVER ユーザーの権限を追加しておく必要があります。これらのコマンドをバッチファイルとして作成しておき、管理者として実行すれば、数秒でデータベースの復元ができます。SQL Server Management Studio を使用すると、何度もクリックする必要があるので、テスト環境では効率的です。

SSMS (SQL Server Management Studio) でT-SQL のデバッグができない

SSMS 18.0 から同機能が削除されたようです。非常に痛いです。 https://docs.microsoft.com/ja-jp/sql/ssms/release-notes-ssms?view=sql-server-ver15#180 代わりに Visual Studio を使用することができます。

SQL Server のサイレントインストール

SQL Server をサイレントインストールする方法です。 SQL2019-SSEI-Expr.exe でもインストールは可能ですが、どうしてもインスタンス名を変更できないため、 SQL2019-SSEI-Expr.exe で実ファイルをダウンロードしたうえで、セットアップを実行します。ついでにサーバーに対して、TCP/IP 接続を許可し、ファイアウォールも許可します。

mkdir C:\Downloads SQL2019-SSEI-Expr.exe /ACTION=Download MEDIAPATH=C:\Downloads /MEDIATYPE=Core /QUIET cd C:\Downloads SQLEXPR_x64_ENU.exe /QS /IACCEPTSQLSERVERLICENSETERMS /ACTION="install" /INSTANCENAME=MSSQLSERVER /SECURITYMODE=SQL /SAPWD=P@ssword /TCPENABLED=1 netsh advfirewall firewall add rule name="MSSQL" protocol=TCP dir=in localport=1433 action=allow

SQL Server Management Studio (SSMS) でデータースなどの名前変更の際 Del が反応しない

SSMS の左側のツリービューで、データベースを選択し、F2 で名前変更を行う際に、Del キーが反応しません。BackSpace キーを使うしかありません。

SQL Server のセットアップを解凍・展開する

SQL Server 2017 with Advanced Service のセットアップファイルを解凍・展開する。F:\Test フォルダは自動的に作成される。

SQLEXPRADV_x64_JPN.exe /x:F:\Test /q

LocalDB のインストール

msiexec /i SqlLocalDB.msi /qn IACCEPTSQLLOCALDBLICENSETERMS=YES

-Microsoft SQL Server