タグ: SQL Server

  • SQL Server Management Studio v18.2の制限を解除する

    SQL Serverの管理やDBの設定のために、マイクロソフトのサイトからSQL Server Management Studio(v18.2)をダウンロードしてきたが、マウス操作だけでDBのテーブル内容を表示しようとすると、制限がかかっている。表示なら上位1000行、編集なら上位200行で制限がついている。SQLを実行すれば、表示もできるし、編集もできるが少々めんどくさい。これの制限を解除する方法。

    設定方法

    1. SQL Server Management Studioを開く。
    2. メニューから、「ツール」、「オプション」の順に選択する。
    3. 「SQL Serverオブジェクトエクスプローラー」を選択する。
    4. 「上位<n>行の選択コマンドの値」を0にする。(もしくは、必要な行数に変える)
    5. 「上位<n>行の編集コマンドの値」を0にする。(もしくは、必要な行数に変える)
    6. 「上位<n>個の監査レコードの選択コマンドの値」を0にする。(もしくは、必要な行数に変える)
    7. 「OK」をクリックして、オプションを閉じる。
    8. テーブルを選択して、右クリックし、表示されるメニューが「すべての行の選択」に変わていることを確認する。

  • SQL Server 2017 Expressに外部のSQL Server Management Studioから接続できない

    SQL Server 2017 Expressをインストールしたが、外部のSQL Server Management Studioから接続できない。ローカルのSQL Server Management Studioからは接続できる。試したことは、

    • TCP/IPの設定もチェック済み
    • Windows Defender ファイアウォールは切り分けのために、一時的に無効した。
    • それでも、接続できない。

    設定を見直して、Windowsのサービスも見直したところ、SQL Server Browerのサービスが無効になっていた。SQL Server Browerのサービスを開始することで、外部からの接続ができるようになった。ただ、初期設定が無効になっていたため、設定変更をしないと、サービスを開始できなかった。

    1. Windowsのサービスを開く。
    2. SQL Server Browerを選択して、プロパティを開く。
    3. スタートアップの種類を自動に変更して適用をクリックする。
    4. サービスを開始する。

    SQL Server Browerのサービスは、SQL Server接続情報をクライアントコンピューターに指定するサービス。これが起動していないため、接続情報がわからず、SQL Server Management Studioは接続でタイムアウトしていた。

  • Management Studioで「保存の変更が許可されていません。~」と表示され、保存できない

    SQL Server Management Studio 18 で、SQL Server 2107 Epxressにアクセスして、テーブルの構造を変更した際に、「保存の変更が許可されていません。~」と表示され、保存できない。メッセージの全文は、下記。

    変更の保存が許可されていません。行った変更には、次のテーブルを削除して再作成することが必要になります。再作成できないテーブルに変更を行ったか、テーブルの再作成を必要とする変更を保存できないようにするオプションが有効になっています。

    変更の保存が許可されていません。行った変更には、次のテーブルを削除して再作成することが必要になります。再作成できないテーブルに変更を行ったか、テーブルの再作成を必要とする変更を保存できないようにするオプションが有効になっています。

    これは、DB側のオプション設定ではなく、Management Studioの設定で禁止されているので、保存できない。なので、次の手順で、Management Studioの設定を変更すると、保存できるようになる。

    手順

    1. Management Studioを開く。
    2. 「ツール」から「オプション」を選択する。
    3. 「デザイナー」を選択する
    4. 「テーブルの再編成を必要とする変更を保存できないようにする」のチェックを外す。
    5. 「OK」をクリックして、オプションを閉じる。

  • SQL Server 2005でログを消す方法

    SQL Server 2005で、DBのログが肥大化してしまい、バックアップ時に切り捨てるスペースもないときの対処。 この作業手順は、作業対象のDBをオフライン(というかデタッチ)にするので、注意。

    1. SQL Server Management Studioを開き、DBサーバに接続する。
    2. 対象のDBを選び右クリックし、プロパティを開く。
    3. プロパティから、MDFファイルとログファイル(LDFファイル)の場所を調べる。
    4. 対象のDBを選び右クリックし、「タスク」から「デタッチ」を選択する。
    5. ExplorerでLDFファイルの保存場所を開き、該当のログファイル(LDFファイル)を削除する。
    6. SQL Server Management Studioで、データベースを選択し、右クリックし、「アタッチ」を選択する。
    7. 「アタッチするデータベース」で「追加」をクリックする。
    8. 上記で調べたMDFファイルの場所を指定し、該当のMDFファイルを選択し、OKをクリックする
    9. 「データベースの詳細」にログファイルのファイル名が表示されている場合は、これを選択して、削除する。
    10. 「OK」をクリックする
    11. データベースがアタッチされる(ちょっと時間がかかる)。このタイミングで新しいログファイル(LDFファイル)ができる。

    ※ SQL Server 2005のサポートは終了してます。なので、自己責任で。

  • メモ:SQL Server 2008/2008 R2のサポート終了は2019年7月9日

    https://www.microsoft.com/ja-jp/sql-server/sql-server-2008

    SQL Server 2008/2008 R2のサポート終了は2019年7月9日。
    移行を考えないと。。。

  • SQL Server 2016は、バックアップのみ暗号化ができる

    データベース本体は暗号化せず、バックアップのみを暗号化する機能がSQL Server 2014より追加されている。SQL Server 2016もバックアップのみ暗号化を行うことができる。

    バックアップの暗号化は、SQL Server 2016 Standard エディションでも使用することができる。

  • SQL Server 2016で開けるファイアウォールのポート

    SQL Server 2016は、デフォルト設定の場合、データベースアクセスに1433番ポートを使用する。そのため、Windows ファイアウォール(セキュリティが強化されたWindows ファイアウォール)で、TCPのポート1433番を開ける規則を作成する。

    ■開放するポート

    プロトコル TCP
    ポート番号 1433

    なお、SQL Server 2005は、OS側のファイアウォールとは別に「SQL Server セキュリティ構成ツール」で開放していた。

    SQL Server 2016では、ファイアウォールをオフにすると、どこからでもつなげるようになるため注意が必要。

  • SQL Server 2005以降で、現在時刻を取得する関数

    SQL Server 2005(Transact SQL)で現在の時刻は、GETDATE() 関数で取得できる。
    SELECT文で使えば、現在時刻を取得できる。
    UPDATE文やINSERT文で使えば、SQL Serverの現在時刻を使って、更新日を更新できる。

    例えば、現在の時刻を取得するだけのSELECT文

    SELECT GETDATE() AS TIME
    

    例えば、更新日(UpdateDate)を現在時刻で更新するUPDATE文

    UPDATE Employee SET UpdateDate = GETDATE()
    

  • DBのデータでカラムの値がNULLのものを検索するSQL

    とても基本的なことなんだけれど・・・
    わからなくて調べたのでメモしておく。
    DBのデータでカラムの値がNULLのデータも検索したい!
    そんなときは、WHERE句で”IS NULL”を使用する。
    ※”ISNULL”という関数もあるが、違うので注意。

    ■使い方

    SELECT * FROM Employee WHERE id IS NULL;
    

    これで id というカラムで値がNULLのレコードを検索することができる。
    動作確認をしているのは、SQL Server (T-SQL)だ。

    ■参考URLなど
    http://msdn.microsoft.com/ja-jp/library/ms184325.aspx