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

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

3
AlwaysOn可用性グループlog_send_rate
仮想マシンでWindows 2012およびSQL Server 2012を実行しているすべてのAlwaysOnセットアップとベアメタルで、log_send_rate sys.dm_hadr_database_replica_statesが一貫して誤った値を返していることがわかりました 。 例(同期モードの場合) sys.dm_hadr_database_replica_states.log_send_rate(ave = 36,571(kb / sはbolで表示)) Perfmon-SQLServer:可用性レプリカ-レプリカに送信されたバイト数/秒(最大= 486,000.000、平均= 259,000.000) Perfmon-SQLServer:Databases-ログフラッシュされたバイト数/秒(最大= 653,044.000、平均= 341,000.000) これに関する投稿を見たことがありませんが、正しく機能していないようです。正しいlog_send_rate値は、AlwaysOnの監視に役立ちます。 他の誰かがこれを経験しましたか?

1
UNPIVOTが互換性レベル80 DBで機能するのはなぜですか?
互換性レベル80で実行されているSQL Server 2008 SP3データベースでUNPIVOTを使用してデータをプルしようとしています。これは、UNPIVOTが機能しないことを意味しますが、私の場合、特定の状況で機能します... 作品: 次の形式の独立したSELECTクエリ: SELECT...FROM...UNPIVOT...WHERE...GROUP BY 動作しません: LEFT JOIN ()同じサーバー内の異なるデータベース上の他のテーブル上の同じクエリ。すべて互換性レベル80。 通常のエラーメッセージが表示されます。 Msg 325, Level 15, State 1, Line 165 Incorrect syntax near 'UNPIVOT'. You may need to set the compatibility level of the current database to a higher value to enable this feature. See help for the SET …

2
シンプルリカバリモードを設定し、ユーザーが作成したすべてのデータベースのログファイルを圧縮する
正しい方向に向けていただければ幸いです。私はT-SQLを頻繁に使用するわけではありませんが、グーグル操作をして、以下のスクリプトを見つけました。スクリプトを少し修正しました。 スクリプトで次のことを行います。 システムDBを除くすべてのデータベースを選択します。 リカバリをシンプルに設定します。 システムデータベースを除くすべてのdb(.ldf)のログファイルを圧縮するには スクリプト: USE MASTER declare @isql varchar(2000), @dbname varchar(64) declare c1 cursor for select name from master..sysdatabases where name not in ('master','model','msdb','tempdb','ReportServer','ReportServerTempDB') open c1 fetch next from c1 into @dbname While @@fetch_status <> -1 begin select @isql = 'ALTER DATABASE @dbname SET RECOVERY SIMPLE' select @isql …

2
COALESCE(…)でサブクエリの選択を最適化する
アプリケーション内から使用する大きなビューがあります。私はパフォーマンスの問題を絞り込んだと思いますが、それを修正する方法がわかりません。ビューの簡略版は次のようになります。 SELECT ISNULL(SEId + '-' + PEId, '0-0') AS Id, *, DATEADD(minute, Duration, EventTime) AS EventEndTime FROM ( SELECT se.SEId, pe.PEId, COALESCE(pe.StaffName, se.StaffName) AS StaffName, -- << Problem! COALESCE(pe.EventTime, se.EventTime) AS EventTime, COALESCE(pe.EventType, se.EventType) AS EventType, COALESCE(pe.Duration, se.Duration) AS Duration, COALESCE(pe.Data, se.Data) AS Data, COALESCE(pe.Field, se.Field) AS Field, pe.ThisThing, se.OtherThing …

2
計算フィールドにインデックスを作成する:文字列またはバイナリデータは切り捨てられます
Foo次のフィールドを持つテーブルがあります。 ID bigint not null identity(1,1), SerializedValue nvarchar(max), LongValue as TRY_CAST(SerializedValue as bigint) 次に、LongValueにインデックスを作成して、数値を表すシリアル化された値を簡単に検索できるようにします。 create nonclustered index IX_Foo on Foo(LongValue); 私に次のエラーを吐き出します: 文字列型やバイナリは省略されます。 はい、SerializedValueに既存のデータがあります。しかし、計算されたフィールドにインデックスを作成することで、何が切り捨てられるのでしょうか。

3
同じ制約とインデックスで新しいテーブルを作成するにはどうすればよいですか?
主キー制約とそのテーブルに非クラスター化インデックスを含む新しいテーブルを作成しています。 キーとインデックスだけでなく、同じ構造と値を持つ別のテーブルを作成したいのですが。 create table Dummy (id integer ,name varchar(20),salary integer Constraint PK_Con_id primary key(id)) insert into Dummy values(11,'AAA',1000); insert into Dummy values(12,'BBB',2000); insert into Dummy values(13,'CCC',3000); insert into Dummy values(14,'DDD',4000); select * from Dummy; create nonclustered index IX_Name on Dummy(Name) 現在、Dmyテーブルを作成していますがDmy、SQL Server 2008 R2のキーと制約がテーブルに反映されません。 SELECT * INTO Dmy FROM Dummy

5
SQL Server 2012常時バックアップ、フルvsコピーのみ
コピーのみのバックアップと完全バックアップは、トランザクションログの番号付けと必要に応じて復元するため、迅速な説明が必要です。 SQL Server 2012のセットアップで、複数のデータベースに対して常にオンになっています。可用性グループは、レプリカの優先バックアップでセットアップされます。 レプリカでは、コピーのみとトランザクションログのバックアップのみが可能です。これは、トランザクションログの復元が必要な場合、プライマリで完全バックアップを実行する必要があることを意味しますか? ありがとうございました

9
データベースは読み取り専用であるか、読み取り専用ファイルがあるため、アップグレードできません。データベースまたはファイルを書き込み可能にして、リカバリを再実行します
データベースファイルを受け取りました。それをロードする手順は、SQL Server 2005をインストールしてから、SQL Server Management Studioを使用して添付することです。 すべてをインストールした後、MDFファイルを添付しようとしましたが、次のように表示されます。 ファイル「D:{folderName} {filename} .LDF」のディレクトリ検索は、オペレーティングシステムエラー21(エラーが見つかりません)で失敗しました LDFファイルはデータベースに付属していなかったため、おそらく自動的に生成されるはずです。 さて、Dドライブは私のCDドライブがある場所なので、そこには何も見つかりません。そこに何かを作ろうとする運もありません。 特定のパスでログファイルを検索しようとするのはなぜですか?データベースファイルがどこにあるのですか? このデータベースを接続するにはどうすればよいですか? アタッチするデータベースを選択すると、「データベースの詳細」の下に3つのエントリが表示されることに気付きました。MDF、NDF、およびLDF。LDFの「現在のファイルパス」は上記のDドライブパスを指しているため、削除しました。 今回、「OK」をクリックすると、別のエラーメッセージが表示されます。 データベースは読み取り専用であるか、読み取り専用ファイルがあるため、アップグレードできません。 データベースまたはファイルを書き込み可能にして、リカバリを再実行します。 ファイルのアクティブ化に失敗しました。物理名D:{folder} {file} .LDFが正しくない可能性があります。 新しいログファイル「...」が作成されました。(Microsoft SQL Server、エラー:3415) そのため、データベースファイルと同じフォルダに新しいログファイルが作成されます。これはすばらしいことですが、セキュリティ上の問題があるようです。 追加情報: この手順では、sysadminアカウントのように見えるログイン名「sa」を使用する必要があります。そのログインを使用してSQL Serverインスタンスに接続しています。 ファイルのプロパティが読み取り専用でないことを確認しました。ディレクトリも読み取り専用ではありません。すべてのACLが許可されます。 データベースをアタッチできません。アタッチしようとすると、「データベースのアタッチに失敗しました」というエラーメッセージがスローされます。 SSMSを閉じて、管理者として再び開くと、違いはありませんでした。 select SERVERPROPERTY('ProductVersion')9.00.4035.00を返します。「IsSql2000 = 1」と書かれている「dbdata.ini」と呼ばれるデータベースに付属する別のファイルがあるため、おそらくSQL Server 2000にロードすることを意図しています。2000で動作させることができるかどうか確認します。

2
断続的なRESOURCE_SEMAPHORE_QUERY_COMPILE待機統計
運用中のSQL Serverの1つで発生している断続的なCPUスパイクのトラブルシューティングを試みています。28 GBのRAMと4つのCPUコアを備えたSQL Server 2008 R2 Standard Editionを実行しています。これが発生すると、RESOURCE_SEMAPHORE_QUERY_COMPILERの待機が多数あることに気づきます。これは約1〜2分続き、その後停止して、CPU使用率は通常に戻ります。 これを調査した結果、これは通常、再利用できない多数の実行プランをコンパイルしたことが原因であると理解しています。 この動作は、メモリプレッシャーによるプランキャッシュの削除によってもトリガーされますか?もしそうなら、私はこれをどのようにチェックしますか?アプリケーションの修正を展開するまで、サーバーRAMのアップグレードなどの短期的な解決策があるかどうかを確認しようとしています。私が考えることができる他の唯一の短期間のオプションは、最も忙しいデータベースのいくつかを別のサーバーに移動することです。

3
SQL Serverエラー「OLE DBプロバイダー 'Microsoft.ACE.OLEDB.12.0'へのアドホックアクセス」のヘルプ
したがって、SQL Server 2008 R2でビューをクエリしようとすると、ユーザーが次のエラーを受け取るという興味深い問題があります。 メッセージ7415、レベル16、状態1、行1 OLE DBプロバイダー 'Microsoft.ACE.OLEDB.12.0'へのアドホックアクセスが拒否されました。リンクサーバーを介してこのプロバイダーにアクセスする必要があります。 問題を調査したところ、OPENROWSETパラメータ、レジストリ値の変更、AdHoc DIstributed Queriesなどに変更を加えた記事がいくつかあります(以下の記事へのリンク)。 http://www.johnsoer.com/blog/?p=538 http://www.remotedbaexperts.com/Blog/dba_tips/2010/09/ad-hoc-access-to-ole-db-provider-microsoft-ace-oledb-12-0-has-been-denied/ 上記のリンクの手順に従ってもエラーが発生します。 ここでの注意点は、テストアカウントを作成してsaを指定したときに、問題なく実行されたことです。管理者権限を持つ同僚も問題なくクエリを実行できます。 このクエリは、このインスタンスをホストしているサーバーのローカルのExcelファイルから提供されています。 2008年の他の修正を知っている人はいますか?

1
頻繁な「ランダムな」SQL Server接続タイムアウト
過去数日間、クライアントはデータベースサーバーへの接続タイムアウトが断続的に発生しています。 サーバーに複数回接続する同じページ上の複数のAjax呼び出しは、成功と失敗が混在しており、特定のWebサイトユーザーが他のユーザーが同じサイトからアクセスしていないときに接続の問題が発生する場合があります。 問題がデータベースにあるのかサーバー自体にあるのかはわかりませんが、同じサーバー上の別のデータベースへの接続に問題がある可能性があります。 サーバーはWindows Server 2008 RCを実行するAmazon Cloud VPCであり、SQL ServerのバージョンはSQL Server 2008 R2です。必要に応じて詳しい情報を提供できます。 誰かがこれをデバッグする方法についてのヒントを教えてもらえますか?接続をテストするためのいくつかの方法はありますか? どうもありがとう。

2
Management Studioを使用して1つのデータベースのみにアクセスするためのSQLサーバーでユーザーを作成する方法[終了]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 質問を更新して、データベース管理者のスタック交換のトピックになるようにします。 6年前休業。 Management Studioを使用して1つのデータベースのみにアクセスするためのSQL Server 2008 R2でユーザーを作成する方法。 よろしく、サルマン

2
SQL Serverで派生テーブルよりも一時テーブルを使用する利点はありますか?
派生テーブルは一時テーブルよりもパフォーマンスが優れていますが、とにかく多くのSQL Server開発者は2番目のテーブルを好みます。どうして?大量のデータ(数百万のレコード)でクエリを実行する必要があり、最良の選択を使用していることを確認したい。 CREATE TABLE A( id BIGINT IDENTITY(1,1) NOT NULL, field1 INT NOT NULL, field2 VARCHAR(50) NULL, ); CREATE TABLE B( id INT IDENTITY(1,1) NOT NULL, field1 VARCHAR(10) NULL, field2 INT NULL ); INSERT INTO A (field1,field2) VALUES (1,'a'),(2,'b'),(3,'c'),(2,'d'),(5,'e'), (6,'f'),(7,'g'),(8,'h'),(9,'i'),(2,'j'); INSERT INTO B (field1,field2) VALUES ('a',1),('b',2),('c',3),('d',4),('e',5), ('f',6),('g',7),('h',8),('i',9),('j',2),('k',3); DECLARE @begin INT=0,@end …


2
SQL Serverのパフォーマンス:PREEMPTIVE_OS_DELETESECURITYCONTEXT主要な待機タイプ
昨日、SQL ServerのCPU使用率が高いことについて不満を言っていた顧客から電話がありました。SQL Server 2012 64ビットSEを使用しています。サーバーはWindows Server 2008 R2 Standard、2.20 GHz Intel Xeon(4コア)、16 GB RAMを実行しています。 犯人が実際にSQL Serverであることを確認した後、ここで DMVクエリを使用してインスタンスの上位の待機を調べました。上位2つの待機は(1)PREEMPTIVE_OS_DELETESECURITYCONTEXTと(2)SOS_SCHEDULER_YIELDでした。 編集:「トップ待機クエリ」の結果を次に示します(誰かが私の希望に反して今朝サーバーを再起動しましたが)。 私たちは多くの激しい計算/変換を行うので、私は理解できますSOS_SCHEDULER_YIELD。しかし、私はPREEMPTIVE_OS_DELETESECURITYCONTEXT待機タイプとそれが最も高い理由について非常に興味があります。 この待機タイプについて私が見つけることができる最良の説明/ディスカッションは、ここにあります。それは言及しています: PREEMPTIVE_OS_待機タイプは、データベースエンジン(通常はWin32 API)を離れ、さまざまなタスクのためにSQL Serverの外部でコードを実行する呼び出しです。この場合、以前にリモートリソースアクセスに使用されていたセキュリティコンテキストが削除されています。関連するAPIは、実際にはDeleteSecurityContext()という名前です 私の知る限り、リンクサーバーやファイルテーブルなどの外部リソースはありません。また、なりすましなどは一切行いません。バックアップが原因でスパイクが発生したり、ドメインコントローラに障害が発生したりする可能性はありますか? これが主な待機タイプになる原因は何ですか?この待機タイプをさらに追跡するにはどうすればよいですか? 編集2: Windowsセキュリティログの内容を確認しました。興味のあるエントリがいくつかありますが、これらが正常かどうかはわかりません。 Special privileges assigned to new logon. Subject: Security ID: NT SERVICE\MSSQLServerOLAPService Account Name: MSSQLServerOLAPService Account Domain: NT Service Logon ID: 0x3143c Privileges: SeImpersonatePrivilege …

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