タグ付けされた質問 「sql-server」

Microsoft SQL Serverのすべてのバージョン(MySQL以外)。sql-server-2016のようなバージョン固有のタグも追加してください。これは、質問に関連することが多いためです。


1
ジョブはスケジュールどおりに実行されていません
したがって、Robocopyスクリプトを実行してすべてのファイルを1つのフォルダーから別のフォルダーに移動する基本的なSQLエージェントジョブがあります。 ジョブはかなり基本的なセットアップです。 かなり基本的なスケジュールで。 それでもまだ実行されていません。うまく走るという意味でもないし、走るという意味でもない。これに該当する理由はありますか? 追加情報については、ジョブについても説明します。 USE [msdb] GO /****** Object: Job [MoveMantisFilesToArchive] Script Date: 12/23/2015 10:21:52 AM ******/ BEGIN TRANSACTION DECLARE @ReturnCode INT SELECT @ReturnCode = 0 /****** Object: JobCategory [[Uncategorized (Local)]]] Script Date: 12/23/2015 10:21:52 AM ******/ IF NOT EXISTS (SELECT name FROM msdb.dbo.syscategories WHERE name=N'[Uncategorized (Local)]' AND category_class=1) …

1
古いデータを読み取り専用にする
現在取り組んでいるデータベースプロジェクトでは、ある時点で「古い」データを読み取り専用に変更する必要があるという要件があります。これはSQL Serverで可能ですか? 読み取り専用権限は特定のしきい値より古いデータにのみ適用されるため、テーブル権限を変更できません。つまり、この時点以降に追加されたデータをユーザーが追加および編集できるはずです。
11 sql-server 

2
SQL Serverのインデックス付きビュー
私はテーブルとそれにインデックス付きビューを持っています Create table mytable1 (ID int identity(1,1), Name nvarchar(100)) Create table mytable2 (ID int identity(1,1), Name nvarchar(100)) Create view myview with schemabinding as select a.name, b.name from mytable1 a join mytable2 b on a.Id = b.Id 次のクエリを実行すると select a.name, b.name from mytable1 a join mytable2 b on a.Id = b.Id …

2
オンライン中にSQL Serverデータベースを新しいディスクに移動する
私は、ディスクI / Oで大いに苦労している1.4TBのSQL Serverデータベースを持っています。私たちはすべての問題を解決する新しいSSDアレイをサーバーにインストールしました。データベースを移動する最良の方法について議論しているだけです。理想的には、ダウンタイムなしでそれを実行できれば、それが最善です。ただし、2日間のパフォーマンスの低下(データのコピー中など)と2時間のダウンタイムのどちらを選択するかは、後者の方が望ましい場合があります。 これまでのところ、私たちが考え出したソリューションは次のとおりです。 簡単なコピー。DBをオフラインにして、ファイルをコピーし、SQL Serverの場所を変更して、オンラインに戻します。大まかな数値では、これには5時間ほどかかると見積もられていますが、これは実際には許容できませんが、最も簡単な解決策です。 ブロックレベルのコピー。rsyncのようなユーティリティを使用して、DBの稼働中にファイルをバックグラウンドでコピーします。移行の準備ができたら、DBをオフラインにして、このユーティリティを使用して差分コピーを実行し、SQLサーバーで新しいファイルを指定してオンラインにします。ここでのタイミングは不明です。1.4TBの差分分析を実行してそれをコピーするのにどのくらい時間がかかるかはわかりません。もう1つの懸念は、ブロックレベルのコピーによって、SQL Serverがファイルを読み取り不可能な状態にして、時間を浪費することです。 SQLマイグレーション。新しいディスクに新しい1.4TB SQLデータファイルを作成し、他のすべてのファイルで自動拡張を無効にします。次に、他のすべてのデータファイルに対してDBBC SHRINKFILE(-file_name-、EMPTYFILE)を順番に実行します。すべてのデータが揃ったら、ある時点でスケジュールされたウィンドウを使用して、MDFファイルをSSDに移動し、他の未使用のファイルを削除します。ダウンタイムを最小限に抑えるので、私はこれが好きです。しかし、これにどれくらい時間がかかるか、またそれが実行中にパフォーマンスの低下を引き起こすかどうかはわかりません。 これをテストするための負荷とパフォーマンスの環境はありません。戦略がステージング環境で機能することは確認できますが、影響やパフォーマンスは確認できません。
11 sql-server  ssd 

5
この更新が一意キー制約違反で失敗するのはなぜですか?
私は「偶然の」DBAであり、比較的経験が浅く、この問題に困惑しています。 MS SQL Server 2012を実行しています。問題はこのUPDATEステートメントにあります。 UPDATE dbo.tAccts SET Ticket = 'ARP.ExGE' , Method = 'smtp' , AcctOwner = 'r00417819' , DisplayName = '~AppLight HBSFax-Inactive' , Destination = 'r00417819@mail.ad.ge.com' , UpdatedBy = SYSTEM_USER , UpdatedOn = CAST(GetDate() AS DATE) FROM dbo.vReclaimable WHERE OHR_EmpStatus <> 'A' これは、vReclaimableビューによって返されるtAcctsテーブルの行のみを更新する必要があります。 vReclaimableビューはtAcctsテーブルに基づいており、tAcctsの行のサブセットを返します。 実行すると、一意のキーエラーで失敗します。 (0 row(s) affected) …

4
XMLの変更:属性を要素に
XML同様の構造のデータを含む列があります。 <Root> <Elements> <Element Code="1" Value="aaa"></Element> <Element Code="2" Value="bbb"></Element> <Element Code="3" Value="ccc"></Element> </Elements> </Root> SQL Serverを使用してデータを変更し、各Value属性を要素に変更するにはどうすればよいですか? <Root> <Elements> <Element Code="1"> <Value>aaa</Value> </Element> <Element Code="2"> <Value>bbb</Value> </Element> <Element Code="3"> <Value>ccc</Value> </Element> </Elements> </Root> 更新: 私のXMLは次のようになります。 <Root attr1="val1" attr2="val2"> <Elements> <Element Code="1" Value="aaa" ExtraData="extra" /> <Element Code="2" Value="bbb" ExtraData="extra" /> <Element Code="3" …
11 sql-server  xml  xquery 

1
本当に忙しいテーブルにインデックスを作成する
insert\select毎回たくさんのテーブルがあります(毎秒100台のマシンが挿入/更新しているような)。 1秒でもロックできないテーブルにインデックスを作成する最良の方法は何ですか? インデックスを作成すると、リクエストがロックされて、実行できなくなります。 100万行以上の大きなテーブルです。

1
SQL Serverの「チェックポイント時にログを切り捨て」オプション
長い話ですが、私たちの長期コンサルタント(元従業員)は、Tivoli Storage Managerとのインターフェースを取るためにカスタムスクリプトを数年(2006年ほど)書いており、という名前のSQL Server DBオプションをチェックしているようtruncate log on checkpointです。彼らの主張は、SQL 2012であるインスタンスでスクリプトが機能し、バックアップを実行することを妨げているということです。 私はそのようなオプションを見つけることができずsp_configure、バックアップが1つのインスタンスを除いてどこでも機能しているので、それは完全なBSだと感じています。しかし、それがそうであるなら、私は地雷を取り除き、他の時代遅れの要素を取り除きたいと思います。ベンダーに確認してもらっていますが、彼らの言うことにはあまり自信がありません。 私が行った調査では、SQL 2000またはSybaseのオプションの1つであると考えられます。もう1つの主張は、復旧モデルがSIMPLE存在し、それをオンまたはオフにする明示的なオプションがない場合、それが以降のバージョン(2008以降)で暗黙的に呼び出される/使用されるというものでした。 TRUNCATE LOG最近のトランザクションログのしくみが原因でこのコマンドは廃止されているため、現時点ではクエリを実行できるオプションではないと思います。 私はSQL Server 2000のインスタンスを持っていないので、誰かがこれを思い出したり、置いてあるものでそれをチェックしたりできることを望んでいました。それは私が推薦できるものではないことを彼らに話しました。私はまた、誰かがこれが時代遅れであることを確認できることを望んでいました。

2
バックアップを作成しているプロセスが見つかりません
お客様のサーバーにSQL Server 2008のインスタンスがインストールされています。お客様のIT部門は、マシンのさまざまなバックアップを担当しています。 SQL Serverログは、毎日午後7時に完全バックアップがあることを示していますが、SQL Serverでスケジュールされた計画の証拠を見つけることができません。 私たちに連絡した技術者は、何らかの自動バックアップがあったかどうかを私たちに伝えることができませんでした。彼らが言ったのは、マシン全体がバックアップされているということだけです。 このフォーラムスレッドで見つけたスクリプトを使用して、物理デバイス名がGUIDであり、これが外部バックアッププロセスであることを確認しました。 USE [msdb] GO SELECT [bs].[database_name], [bs].[backup_start_date], [bs].[backup_finish_date], [bs].Server_name, [bs].user_name AS [BackupCreator] , [bmf].physical_device_name FROM msdb..backupset bs INNER JOIN msdb..backupmediafamily bmf ON [bs].[media_set_id] = [bmf].[media_set_id] ORDER BY [bs].[backup_start_date] DESC これは、上記のクエリの行です。 db_name 2015-09-16 19:01:23.000 2015-09-16 19:01:28.000 SERVER_NAME NT AUTHORITY \ SYSTEM {424F084A-F35D-4A66-8FC7-072268A89A77} 5 さらに、バックアップの開始日と終了日は5秒間しかないため、SQLサーバーの仕事ではないことは明らかです。 …

1
このwhileループで明示的なトランザクションが必要ですか?
SQL Server 2014: 非常に大きな(1億行)テーブルがあり、その上のいくつかのフィールドを更新する必要があります。 ログシッピングなどの場合も、一口サイズのトランザクションを維持する必要があります。 以下を少し実行してからクエリをキャンセル/終了すると、これまでに行われた作業はすべてコミットされますか、いつでもキャンセルできるように明示的なBEGIN TRANSACTION / END TRANSACTIONステートメントを追加する必要がありますか? DECLARE @CHUNK_SIZE int SET @CHUNK_SIZE = 10000 UPDATE TOP(@CHUNK_SIZE) [huge-table] set deleted = 0, deletedDate = '2000-01-01' where deleted is null or deletedDate is null WHILE @@ROWCOUNT > 0 BEGIN UPDATE TOP(@CHUNK_SIZE) [huge-table] set deleted = 0, deletedDate = '2000-01-01' …

2
データベースSQL Server 2012をミラーリングできません
次のコマンドを使用してデータベースをミラーリングしようとした場合 ALTER AVAILABILITY GROUP SQLAlwaysonGroup ADD DATABASE test0916aj8CJ 次のエラーが表示されます メッセージ1475、レベル16、状態105、行1 データベース「test0916aj8CJ」には、バックアップされていない一括ログ変更が含まれている場合があります。プリンシパルデータベースまたはプライマリデータベースでログバックアップを作成します。次に、このバックアップをミラーデータベースで復元してデータベースミラーリングを有効にするか、すべてのセカンダリデータベースで復元して、可用性グループに参加できるようにします。 データベースをバッキングせずにこれを実行できますか?または、バックアップしてからバックアップを破棄する必要があります。新しく作成されたデータベース用なので、この時点ではバックアップは必要ありません。 私は以下を試しました... BACKUP DATABASE [test0916aj8CJ] TO DISK = N’NUL’ WITH COPY_ONLY, NOFORMAT, INIT, NAME = N’test-Full Database Backup’, SKIP, NOREWIND, NOUNLOAD GO しかし、上記の方法も機能しませんでした。 ありがとう

1
列のIdentityプロパティの削除がサポートされていないのはなぜですか
SQL Server 2000以降、ID列を "非ID"にする機能が削除されたことを読んだことがあります。そして、これは「設計どおり」でした(欠けている機能だけでなく)。 これが私がブログで見つけた例です。システムテーブルの更新が含まれます。(そしてその機能はSQL Server 2000の後で削除されました。)私はシステムテーブルを介してこれを行うのは良い考えではないことを理解しています。なぜこれを別の方法で実行する機能がないのか疑問に思っています。 これを回避すると、かなりの量の作業が必要になります。(ダウンタイムに耐えられない環境で、数億行を新しいテーブルにコピーする。) だから、「なんで」と聞いてみました。 SQL Server 2005以降のバージョンで何が変更されて、これは悪いことでしたか?それとも、それは常に悪いことでしたか? ID列を再び通常の列にすることにより、どの「ベストプラクティス」(または同様の原則)に違反しますか? - 「 これを行う理由」の要求に答えるための更新:これは非常に高レベルの要約です:テーブルにパーティションを追加し始めます。(古いデータをアーカイブ/パージできるようにするためです。)それは簡単です。ただし、レコードが別のパーティションに移動して、削除されないようにする必要がある場合があります(パーティションがアーカイブ/削除のために表示される場合)。(行を別のパーティションに移動するためのスペースが常にあるように、パーティション列を2増やしています。) しかし、パーティション列がID列の場合、値を削除して再挿入する必要があります(ID列の値を更新する方法はありません)。これにより、レプリケーションで問題が発生します。 そのため、ID列の代わりにシーケンスを使用したいと考えています。しかし、その切り替えは、大規模なデータベースでは非常に困難です。

3
「WITH NOCHECK」を使用して外部キーを作成すると、何が失われますか?
EXISTS()FKルックアップ値で呼び出しを行うと、そのFK制約が信頼できる場合、結果はすぐにわかります。 そして、それが信頼されていない場合(を使用してFKを作成するときなどWITH NOCHECK)、SQL Serverはテーブルに移動して、値が実際に存在するかどうかを確認する必要があります。 他に使用することで失うものはありNOCHECKますか?

1
異なるテーブルからORDER BYを使用してTOP 1を選択するときにインデックス付きビューを設定する方法
次のシナリオでインデックス付きビューを設定して、2つのクラスター化インデックススキャンなしで次のクエリが実行されるようにしています。このクエリのインデックスビューを作成して使用するときはいつでも、私が付けたインデックスはすべて無視されるようです。 -- +++ THE QUERY THAT I WANT TO IMPROVE PERFORMANCE-WISE +++ SELECT TOP 1 * FROM dbo.TB_test1 t1 INNER JOIN dbo.TB_test2 t2 ON t1.PK_ID1 = t2.FK_ID1 ORDER BY t1.somethingelse1 ,t2.somethingelse2; GO テーブルの設定は次のとおりです。 2つのテーブル 上記のクエリによる内部結合で結合されている 上記のクエリでは、最初の列から、次に2番目のテーブルの列の順になっています。TOP 1のみが選択されています (以下のスクリプトには、問題の再現に役立つ場合に備えて、テストデータを生成する行もいくつかあります) -- +++ TABLE SETUP +++ CREATE TABLE [dbo].[TB_test1] ( [PK_ID1] [INT] IDENTITY(1, …

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.