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

SQL Server 2008 R2(メジャービルドバージョン10.50.xxxx)。また、sql-serverでタグ付けしてください。

1
SQL Serverエラー「ファミリーシーケンス番号2がありません」
サーバーにローカルデータベースを復元しようとしていますが、バックアップに問題があります。ファイル.bakを実行しましたが、サーバーにロードしようとするたびに許可されません。 ここに私が受け取るエラーメッセージのスクリーンショットがあります: 私はRESTORE LABELONLY自分のファイルを復元するために使用できるが、それでも機能しないことを読んだのですが、実行するたびに次のようなものが表示されます: バックアップデバイス 'C:\ Program Files \ Microsoft SQL Server \ MSSQL10_50.JOSEMA \ MSSQL \ Backu \ INNOVA-T.bak'を開けません。オペレーティングシステムエラー3(このエラーのテキストを取得できませんでした。理由:15105)。メッセージ3013、レベル16、状態1、行1 RESTORE LABELONLYが異常終了しています。 どんな助けでも素晴らしいでしょう。ありがとうございました。

1
複製されるLOBデータの長さ(2135980)が構成済みの最大値65536を超えています
レプリケーションエラー「レプリケートされるLOBデータの長さ(2135980)が構成済みの最大65536を超えています」が発生します。 sp_configureは以前に適用されて最大値(-1)に設定され、sys.configurationsに対するクエリは最大値(-1)が使用中であることを確認しました。 EXEC sp_configure 'max text repl size', -1 ; RECONFIGURE; GO select * from sys.configurations where name like 'max text repl size%'; GO 最大値ではなく「最大テキストreplサイズ」に大きな値を使用して、無効にしてからもう一度オンにしてみましたが、役に立ちませんでした。 「テキストの最大replサイズ」の設定や他のどこかを上書きできるものはありますか?

3
SQL Serverのバージョンに応じて、RAISERRORまたはTHROWを選択することはできますか?
これが私のコードです: BEGIN TRY INSERT INTO TABLE (F1,F2,F3) VALUES ('1','2','3') END TRY BEGIN CATCH ;THROW END CATCH SQL 2008が搭載されたマシンで実行しない限り、うまく機能します。CATCHブロックでSQLバージョンをチェックし、それが2012以上の場合はTHROWを実行し、2008の場合はRAISERRORを実行します。構文エラー、それが可能かどうか疑問に思っています。このような単純なものでさえ、私にはうまくいきません。 BEGIN CATCH IF ((SELECT SERVERPROPERTY('productversion')) >= 11) ;THROW END CATCH 任意のアドバイスをいただければ幸いです。

2
SQL Server-NTEXT列と文字列操作
というNTEXT列のあるテーブルがありますcomments。私は2番目の文字列を持っている、のは、それを呼びましょうanothercomment(varcharニーズが与えられたの内側に置くこと)comments言葉の後の文字列UPDATEHERE。 キャストするnvarchar(max)とcomments文字列が切り捨てられるため、CHARINDEX()(のようなものは使用できませんMsg 8152, Level 16, State 10, Line 2 String or binary data would be truncated.)。以前datalength()は、8000文字を超える数千の列があることを確認してきました。 (はるかに長い文字列ではありますが)私が達成したいことの例: コメント- This is a test UPDATEHERE This is the end of the test 別のコメント- . This is inserted. 結果の文字列- This is a test UPDATEHERE. This is inserted. This is the end of the …

1
インデックスSEEKは、OPTION(RECOMPILE)でない限り使用されませんか?
(質問はSOから移動しました) クラスタ化インデックス付きのテーブル(ダミーデータ)に2つの列が含まれています。 次に、これら2つのクエリを実行します。 declare @productid int =1 , @priceid int = 1 SELECT productid, t.priceID FROM Transactions AS t WHERE (productID = @productid OR @productid IS NULL) AND (priceid = @priceid OR @priceid IS NULL) SELECT productid, t.priceID FROM Transactions AS t WHERE (productID = @productid) AND (priceid = @priceid) …

2
SELECT…WITH XLOCKを使用する理由は何ですか?
私はいくつかの再発するデッドロックに直面しています。そのうちの1つはキーロックであり、デッドロックの犠牲になるXLOCKヒントを含むSELECTクエリが含まれています。もう1つのステートメントは、最初のクエリのビューの一部であるテーブルの1つへのINSERTです。 見る: create view dbo.viewE as select * from dbo.E where myValue > 13000 クエリを選択: select * from dbo.viewE with (XLOCK) where A > GETUTCDATE() INSERTステートメント: INSERT INTO [dbo].[E] (myValue,A) VALUES (10,GetDate()) 基になるテーブルdbo.Eは、約20列に約300万行を保持しています。それらの一部はntextです。 クエリを取り出し、2つのトランザクションで手動でシミュレーションすると、動作は再現可能です。XLOCKが選択から削除されると、動作が変わります。 デッドロックグラフ: <deadlock-list> <deadlock victim="process222222221"> <process-list> <process id="process222222221" taskpriority="0" logused="0" waitresource="KEY: 5:72057604035644444 (ccdf51accc0c)" waittime="2522" ownerId="27202256401" transactionname="SELECT" lasttranstarted="2015-09-14T16:32:36.160" …


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

2
SARGカーディナリティの推定、なぜフルスキャンではないのですか?
フルスキャンがないのはなぜですか(SQL 2008 R2および2012)。 テストデータ: DROP TABLE dbo.TestTable GO CREATE TABLE dbo.TestTable ( TestTableID INT IDENTITY PRIMARY KEY, VeryRandomText VarChar(50), VeryRandomText2 VarChar(50) ) Go Set NoCount ON Declare @i int Set @i = 0 While @i < 10000 Begin Insert Into dbo.TestTable(VeryRandomText, VeryRandomText2) Values(Cast(Rand()*10000000 as VarChar(50)), Cast(Rand()*10000000 as VarChar(50))); Set @i …

1
実際にインストールする前に、利用可能なセットアップからSQL Serverのバージョンとエディションを確認してください。
SQL Server 2008 R2 EnterpriseからStandardエディションへのダウングレードプロセスを行っています。 上記のアクティビティを開始するために、SQL Serverの利用可能なStandard Editionを探していました。見つけましたが、以下の点で混乱しました: セットアップファイル(以前のチームメンバーによって保存された)は、SQL Server 2008 R2であると言うフォルダーにありますが、インストールを開始する前にクロスチェックするために、default.iniファイルを調べました。 SQLSERVER2008 Configuration File [SQLSERVER2008] これは、これが必要なSQL Serverの正しいバージョンであるかどうか疑問を投げかけました。それで、実際に先に進んでインストールを試みる前に、上記の方法がバージョンを決定するのに正しくない場合、他の方法はありますか? 使用可能なSQL Serverのエディションも確認できますか?セットアップでは、それが本当にStandard Editionであるかどうかほとんどわかりません。 セキュリティポリシーに従って、新しいメディアを単にダウンロードすることはできません。また、ダウンロードする権利もありません。

3
既存のユーザーのパスワードポリシーの確認
最近、多くのデータベースログインでenforce_password_policyフラグが有効になっていない環境に入りました。 次の監査では、これらのログインのパスワードの検証が必要です。 次のクエリを使用して、ログインのリストとフラグがオンかオフかを取得しました。 select @@SERVERNAME as servername, name, IS_SRVROLEMEMBER('sysadmin', name) as SYSADMIN, type_desc, create_date, is_policy_checked, is_disabled, password_hash, PWDCOMPARE(name, password_hash) as UsernameAsPassword FROM sys.sql_logins ただし、フラグはユーザーの作成時にのみ関連するため、パスワードが実際にパスワードポリシーに準拠しているかどうかはわかりません。 パスワードポリシーのコンプライアンスについて既存のユーザーをテストする既知の方法はありますか? 私は古いパスワードにアクセスできず、それらを必要としない方法を好みます。

1
高PAGELATCH_ *およびWRITELOG待機。それらは関連していますか?
非常に高いPAGELATCH_EXおよびPAGELATCH_SH待機タイプと、高いWRITELOG待機が発生しています。PAGELATCH待機の原因となっているクエリを診断しました。IDENTITY値で定義されたビジーなクラスター化された主キーへの挿入率を下げることで、それらを排除できます。この現象は最終ページ挿入ラッチ競合として知られていると理解しています。 ただし、私の質問は、新しいレコードが挿入されたとき、SQL Serverがバッファーページで排他的なPAGELATCH_EXを取得し、レコードをバッファーページに挿入して、トランザクションログにレコードを書き込み、詳細なhttps://として排他的なPAGELATCH_EXを解放することです。 www.microsoft.com/en-ie/download/details.aspx?id=26665ページ24.または、詳細な「高度に同時実行されているINSERTワークロードでのPAGELATCH競合の解決-背景情報SQLCATのガイド:リレーショナルエンジン レコードがラッチメカニズムの外部のログに書き込まれる場合、PAGELATCH待機が高くなる原因として、ディスクへの遅い書き込みを除外できます。しかし、レコードがログに記録されるまで強化されるまでラッチが保持されている場合は、おそらくWRITELOGを考慮する必要があります。 また、複数の非クラスター化インデックスがあると、PAGELATCH_ *ラッチがより長く保持されます。つまり、テーブルにクラスター化されており、複数の非クラスター化インデックスがラッチに追加され、各インデックスバッファーページに同時に解放されますか? 更新1 confio-sql-server-writelog-waitスライド2と一般的なWALアーキテクチャを 読んだ後。両方のホワイトペーパーで説明されている「行が変更されたログエントリを記録する」手順は、SQL Serverがディスクではなくトランザクションログキャッシュに変更を記録することを指していることを理解しました。トランザクションが完了するか、バッファがいっぱいになると、すべてのレコードがすぐにディスクにフラッシュされます。

2
別のSQLアカウントとして実行されるSQLジョブステップ
別のSQLログインアカウントとして実行されるSQLジョブステップを設定する方法に興味があります。既存の資格情報を必要とする新しいプロキシアカウントを設定する必要があるようです。資格情報を作成するときの唯一の選択肢は、Windowsログイン資格情報を使用することです。 私が実行しようとしているジョブは以下のとおりです。他にもステートメントがありますが、SQLログインとして実行するようにジョブステップを設定すると失敗します。 insert into [dbo].[TableA] SELECT ss.[Ref_ID] ,mm.[studentID] ,mm.[studentPersonID] ,mm.[studentFirstname] FROM [dbo].[TableB] mm left outer join [dbo].[TableC] ss on ss.parentPersonID=mm.parentPersonID and mm.studentPersonID = ss.studentPersonID where ss.Ref_ID is not null; これがSQLジョブステップを介して実行されると、失敗します。 Executed as user: an_admin_account. Access to the remote server is denied because the current security context is not trusted. [SQLSTATE …

3
ログイン用のパスワードを誰が変更したかを知る方法はありますか?
SQL Server 2008 R2でログイン用のパスワードを変更したユーザーを見つけようとしています。 私はすでにデフォルトのトレースをチェックしました-それはそのイベントを記録しません。デフォルトのトレースには、次のセキュリティ関連のイベントが含まれます。 /* Audit Add DB user event Audit Add login to server role event Audit Add Member to DB role event Audit Add Role event Audit Add login event Audit Backup/Restore event Audit Change Database owner Audit DBCC event Audit Database Scope GDR event (Grant, Deny, …

3
1つまたは2つのインデックス?
データベースのテーブルに次のインデックスを作成しました。 CREATE INDEX [idx_index1] on [table1] (col1, col2, col3) サーバーは次の「不足している」インデックスを提案しています: CREATE INDEX [idx_index2] on [table1] (col1, col2) INCLUDE (col3, col4, col5, col6....) 維持する必要のある新しいインデックスを作成するのではなく、提案された列を含めるように既存のインデックス定義を修正するのは私には理にかなっています。col1とcol2を選択するクエリは、index1をindex2と同じくらい効果的に使用できます。私は正しいのですか、それとも何か不足しているのでしょうか?

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