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

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

3
SQL Server 2008 / R2復旧モデル
特定のサーバー上のほとんどすべてのデータベースは完全復旧モデルを必要とせず(トランザクションログのバックアップは行いません)、デフォルトでは常にデータベースを作成して単純復旧モデルを指定する必要があります。 多くの場合、特定の実際的な理由により、SSMSを使用して多くのデータベースが作成されます。ただし、ミスが発生する可能性があり、オペレーターは単純復旧モデルの指定を忘れることがあります。これにより、数日後、切り捨てられなかった60 GBのログファイルが3つまたは4つあるために、ボックスがディスク領域に苦しむ「驚き」が生じます。 シンプルリカバリモデルを新しいデータベースのデフォルト設定にするには、modelデータベースでリカバリモデルを構成します。しかし、これが推奨されますか?これを行うと、将来的に戻って何らかの形で私に噛まれる可能性がありますか?

1
SQL Server 2008 R2ダーティリード-どのように非アトミックですか?
「ダーティ」なダーティリードが、コミットされていない読み取りの分離レベルに達する可能性があるのではないかと思っています。更新されたがまだコミットされていない行が表示されることを理解していますが、 行は部分的に更新されたように見えますか?つまり、一部の列は更新され、一部は更新されていませんか? 1つの列が部分的に更新されたように見えますか?たとえば、完全に更新中のvarchar(4000)列があり、実際には4000文字が含まれていると想定しているとします。前の状態の2k文字と新しい状態の2k文字を読み取ることができますか?長さが> 8kのvarchar(max)はどうですか? 更新:ある程度の議論の後、最小限のコンセンサスは、列のサイズが> 8KBの場合、たとえ列自体の中であってもダーティリードが可能であるということです。

2
付与されているにもかかわらず、「オブジェクトに対するSELECT権限が拒否されました」を受け取る
私はプログラマーであり、dbaではありません...私は危険なだけのことを知っています。 私は、データベースのdb_ownerであるレガシーユーザーを持つデータベースを継承しました。ビジネス上の理由から、既存のテーブル、スキーマなどに対するこのユーザーの権限を調整することはできませんが、いくつかの新しいテーブルが作成されており、このユーザーにそれらのSELECTアクセスのみを許可します。 これらのテーブルに対するこのユーザーの権限が設定されているため、GRANTに設定されているSELECTを除いてすべてが拒否されます。 ただし、このユーザー(dbadmin)がこれらのテーブル(AccountingAudit)の1つでSELECTを実行しようとすると、次のエラーが発生します。 The SELECT permission was denied on the object 'AccountingAudit', database 'billing', schema 'dbo'. このSQLを実行して、このテーブル/ユーザーに設定されている権限を確認しました。 select object_name(major_id) as object, user_name(grantee_principal_id) as grantee, user_name(grantor_principal_id) as grantor, permission_name, state_desc from sys.database_permissions そして、これは私が返すものです: AccountingAudit dbadmin dbo ALTER DENY AccountingAudit dbadmin dbo CONTROL DENY AccountingAudit dbadmin dbo DELETE DENY AccountingAudit dbadmin …


3
カスケード削除を避けるべき時期はありますか?
SQL Server 2008には、1対多の関係で他の3つの子テーブルにリンクされているプラ​​イマリテーブルがあります。したがって、プライマリテーブルでカスケード削除を使用して、プライマリテーブルのレコードが削除されると子テーブルのすべてのレコードが削除されるようにすることを検討しています。 では、カスケードは正しい選択をここで削除しますか? カスケードdeteleを使用しない場合

1
名前列の順列と組み合わせを生成する
順列と組み合わせについて、次のサンプルデータがあります。 create table tbltest ( name varchar(50), addres varchar(100) ); insert into tbltest values('Sam Mak John','Street 1 HNo 101 USA'); insert into tbltest values('Donatella Nobatti','HNo 101 UK'); insert into tbltest values('Sam Buca','Main Road B Block UAE'); insert into tbltest values('Juan Soponatime','Hight Street CA'); insert into tbltest values('Aaron Spacemuseum','HNo A10 100 …

1
データベースがRESTORING状態で止まっている根本的な原因を特定する
データベースがスタックRESTORING状態になるという問題を解決する質問があることを知っており、それらのソリューションを使用してデータベースを手動でオンラインに戻しましたが、私のシナリオは多少異なります。 本番環境のコピーをDEVインスタンスに復元するPowershellスクリプトを使用した自動復元があります。スクリプトは約1年間変更されず、復元プロセスが終了するRESTORINGこともありますが、復元されたデータベースが停止した状態になることがあります(スクリプトが正常に機能することもあれば、このように失敗することもあります)。 プロセスを手動で再実行するか、SSMSのユーザーインターフェイスまたはT-SQLを使用してデータベースを手動で復元するたびに、問題なく完了します。 CHECKDB復元されたDBで実行することを推奨する回答を見つけましたが、この問題の原因として何も出てきませんでした。 復元スクリプトはデータベースの完全バックアップを復元し、"WITH RECOVERY"オプションを使用するため、実際にはを使用して復元しているのに、復元プロセスを停止している可能性があるものを見つけようとしています"WITH RECOVERY"。 私はこれが時々起こっている理由を理解しようとすることに行き詰まっているので、どんな提案も本当に感謝しています。 症状を治療するのではなく、問題の根本的な原因を解決したいと思います。つまり、手動でDBを再度復元することです。 更新: @Brentが推奨するGithub Gist- こちら。

1
Pythonで取得したSQL Server VARCHAR列のエンコードの問題
最近、SQL Serverでvarchar(120)として保存されているフィールドに関連するエンコーディングに問題がありました。SSMSでは、varcharは次のように表示されます。 「ジョンベンを殺したのは誰?」 ただし、Pythonに取り込むと、次のようになります。 私はこれをPython側から調査しましたが、奇妙なことは何も起こっていません。私の理論では、SQL Serverのvarcharは、PythonではSSMSとは異なる方法で表示されるUTF-8文字を受け入れます。SQL Serverでのエンコードについてはあまり詳しくありません。誰かが私に次のことを知らせてくれますか? SSMSでvarcharのエンコーディングを表示する方法はありますか?たとえば、現在SSMSからのコンマを表示する代わりに、\ x82を参照してください。 SQL Server 2008を使用しています。インポート/エクスポートツールを使用したり、フラットファイルにダンプしたりせずに、UTF-8文字のエンコードをASCII文字に変更する方法はありますか?つまり、クエリを介してこの変換を行うことができますか? クエリを介してプログラムで問題のあるレコードを特定する方法はありますか(問題は、ASCIIではサポートされていないUTF-8文字として定義されています)。 前もって感謝します! 使用sp_help N'table_name';して、このVARCHAR列の照合順序は次のとおりSQL_Latin1_General_CP1_CI_ASです。

2
SQL Server 2014でのフルスキャンによる統計の更新では100%のCPUを使用し、2008 R2では15%を使用します
フルスキャンの更新統計では、SQL Server 2008 R2でCPUの20%を使用しているのに、同じテーブルで同様のハードウェア機能を使用しているのに、SQL Server 2014でCPUの100%を使用するのはなぜですか? 私はMAXDOP他のオプションを検討してきましたが、特に目立つものは何もありません。これを引き起こす可能性のある設定があることは承知していますが、設定は両方のデータベースで非常に似ています(たとえば、MAXDOP両方とも4で、両方に複数のコアがあります)。どちらもEnterprise Editionです。 これを説明できるSQL Server 2014とSQL Server 2008 R2で「異なる」ものはありますか?どちらのサーバーでも、メモリオプションは90%です。何を探すべきかについての考えはありますか? SQL Server 2008 R2 / SP3とSQL Server 2014 / SP2を使用する2台のサーバーで、フル(100%)スキャンによる統計更新を週に1回実行します。データベースの構造は同じです。2008 R2サーバーでは、2つの非常に大きなテーブルの統計の更新に数時間かかりますが、これは予想どおりですが、CPUは使用率全体で20%未満にとどまります。ただし、2014サーバーでは、CPUは約40分間100%になります。2014サーバーではテーブルが少し小さくなっています。SQLモニターの分析メニューを使用してこれを確認します。 2014 SQL ServerのOlaログファイルの出力は次のとおりです。CPUは、約2:10から2:45まで100%になります。 Date and time: 2017-06-24 02:10:20 Command: UPDATE STATISTICS [InVA].[dbo].[AuditField] [_WA_Sys_00000005_15502E78] WITH FULLSCAN Outcome: Succeeded Duration: 00:07:48 Date and time: 2017-06-24 02:18:08 Date …

2
Tablockヒントがデッドロックをトリガーする
最小限のログを使用して、2つのデータセットを空のヒープテーブルに挿入しました。これは、次の形式のSQLで並列実行されている2つのSQL実行タスクを使用して行われました。 INSERT INTO Table (TABLOCK) SELECT FROM ... ジョブが少しハングした後、SQLタスクの1つがデッドロックの犠牲になりました。以下は、デッドロックグラフのXML出力です。 誰かが内部で何が起こっていたか説明できますか? <resource-list> <objectlock lockPartition="0" objid="1586156746" subresource="FULL" dbid="7" objectname="dbo.TargetTable" id="lock7374a00" mode="IX" associatedObjectId="1586156746"> <owner-list> <owner id="process9609dc8" mode="Sch-S"/> <owner id="process9609dc8" mode="IX"/> </owner-list> <waiter-list> <waiter id="process5e13048" mode="X" requestType="convert"/> </waiter-list> </objectlock> <objectlock lockPartition="0" objid="1586156746" subresource="FULL" dbid="7" objectname="dbo.TargetTable" id="lock7374a00" mode="IX" associatedObjectId="1586156746"> <owner-list> <owner id="process5e13048" mode="Sch-S"/> <owner id="process5e13048" …

3
列の特殊文字をスペースで置き換える
特殊文字をスペースに置き換えるクエリを作成しようとしています。以下のコードは、行を識別するのに役立ちます。(英数字、カンマ、スペースは有効です): SELECT columnA FROM tableA WHERE columnA like '%[^a-Z0-9, ]%' 置換関数をselectステートメントに統合して、結果セット内の英数字、コンマ、スペース以外のすべての文字を ''(スペース)で置き換えるにはどうすればよいですか。これは機能しません: SELECT replace(columnA,'%[^a-Z0-9, ]%',' ') FROM tableA WHERE columnA like '%[^a-Z0-9, ]%'


3
空のテーブルをクエリするアプリケーション
私の会社では、かなり大きなパフォーマンスの問題があるアプリケーションを使用しています。データベース自体には多くの問題がありますが、私が取り組んでいるところですが、問題の多くは純粋にアプリケーションに関連しています。 私の調査では、空のテーブルをクエリする何百万ものクエリがSQL Serverデータベースにヒットしていることがわかりました。約300の空のテーブルがあり、それらのテーブルの一部は1分あたり最大100〜200回クエリされます。テーブルは私たちのビジネス領域とは何の関係もなく、基本的に元のアプリケーションの一部であり、ベンダーが私たちのためにソフトウェアソリューションを作成するように契約したときにベンダーが削除しませんでした。 アプリケーションエラーログがこの問題に関連するエラーであふれていると思われるという事実は別として、ベンダーは、アプリケーションまたはデータベースサーバーのいずれにもパフォーマンスまたは安定性の影響がないことを保証します。エラーログは、診断を行うために2分を超える価値のあるエラーが表示されない程度にフラッディングされます。 これらのクエリの実際のコストは、CPUサイクルなどの点で明らかに低くなります。しかし、SQL Serverとアプリケーションにどのような影響があるかを誰かが示唆できますか?リクエストの送信、確認、処理、返送、アプリケーションによる受信確認の実際のメカニズム自体がパフォーマンスに影響を与えると思います。 アプリにはSQL Server 2008 R2、Oracle Weblogic 11gを使用しています。 @ Frisbee-短い話ですが、アプリのデータベースの空のテーブルにヒットするクエリテキストを含むテーブルを作成し、空であることがわかっているすべてのテーブル名についてクエリを実行し、非常に長いリストを取得しました。トップヒットは30日間の稼働時間で270万回の実行でした。アプリは一般的に午前8時から午後6時まで使用されているため、これらの数値は運用時間に集中しています。複数のテーブル、複数のクエリ、おそらく結合を介した関連性の高いものとそうでないもの。トップヒット(当時は270万)は、結合のないwhere句を使用した単一の空のテーブルからの単純な選択でした。空のテーブルへの結合を伴うより大きなクエリにはリンクテーブルの更新が含まれる可能性があると予想しますが、それを確認してこの質問をできるだけ早く更新します。 更新:1043から4622614(2.5か月以上)の実行数のクエリが1000個あります。キャッシュされたプランがいつから始まったかを調べるために、さらに掘り下げる必要があります。これは、クエリの範囲を把握するためのものです。ほとんどは、20を超える結合でかなり複雑です。 @ srutzky-はい、計画がいつコンパイルされたかに関連する日付列があると思いますので、それを確認してみましょう。SQL ServerがVMwareクラスター上にある場合、スレッドの制限が要因になるのでしょうか。ありがたいことに、すぐに専用のDell PE 730xDになります。 @Frisbee-返信が遅くなってすみません。あなたが示唆したように、SQLQueryStress(実際には240,000回の反復)を使用して、空のテーブルからselect *を24スレッドで10,000回実行し、10,000バッチリクエスト/秒をすぐにヒットしました。その後、24スレッドで1000倍に削減し、4,000バッチリクエスト/秒未満でヒットしました。また、12スレッドのみで10,000回の反復を試行し(合計120000回の反復)、これにより、持続的な6,505バッチ/秒が生成されました。CPUへの影響は実際に顕著で、各テスト実行中の合計CPU使用量の約5〜10%です。ネットワーク待機はごくわずかでした(私のワークステーション上のクライアントで3ミリ秒など)が、CPUへの影響は確かにありました。それは、CPU使用率と、不要なデータベースファイルIOに要約されます。1秒あたりの合計実行回数は3000弱で計算され、これは本番環境ではありませんが、このような数十のクエリの1つだけをテストしています。したがって、毎分300〜4000回の割合で空のテーブルにヒットする何百ものクエリの正味の影響は、CPU時間に関しては無視できません。すべてのテストは、デュアルフラッシュアレイと256GB RAM、12個の最新コアを備えたアイドル状態のPE 730xDに対して行われました。 @ srutzky-良い考え。SQLQueryStressはデフォルトで接続プールを使用しているようですが、とにかく調べてみたところ、接続プールのボックスがオンになっていることがわかりました。フォローして更新 @ srutzky-アプリケーションで接続プーリングが有効になっていないようです-有効になっている場合は機能していません。プロファイラートレースを実行したところ、接続に監査ログインイベント用のEventSubClass "1-Nonpooled"があることがわかりました。 RE:接続プーリング-weblogicsをチェックしたところ、有効な接続プーリングが見つかりました。プーリングのトレースをさらに実行し、プーリングの兆候が正しく/まったく発生していないことを発見しました: 次に、データが設定されたテーブルに対して結合を使用せずに単一のクエリを実行すると、次のようになります。例外は、「SQL Serverへの接続の確立中にネットワーク関連またはインスタンス固有のエラーが発生しました。サーバーが見つからなかったか、アクセスできませんでした。インスタンス名が正しく、SQL Serverがリモート接続を許可するように構成されていることを確認してください。 (プロバイダー:名前付きパイププロバイダー、エラー:40-SQL Serverへの接続を開けませんでした) "バッチリクエストカウンターに注意してください。例外が生成されている間にサーバーにpingを実行すると、ping応答が成功します。 更新-2つの連続するテスト実行、同じワークロード(select * fromEmptyTable)、プーリング有効/無効。CPU使用率がやや多く、多くの障害が発生し、500バッチリクエスト/秒を超えることはありません。テストでは、10,000バッチ/秒でプールがオンの場合の障害はなく、約400バッチ/秒の場合、プールが無効になっているために多くの障害が発生しています。これらの失敗は接続の可用性の欠如に関連しているのだろうか? @ srutzky- sys.dm_exec_connectionsからCount(*)を選択します。 プーリングが有効:負荷テストが停止した後でも37が一貫して 無効化されたプーリング: SQLQueryStressで例外が発生しているかどうかに応じて11-37。つまり、これらの谷がBatches / secグラフに表示されると、SQLQueryStressで例外が発生し 、接続数が11に減少し、その後37に徐々に戻ります。バッチがピークに達し、例外が発生していないとき。とても面白いです デフォルトの0に設定されている両方のテスト/ライブインスタンスの最大接続数。 アプリケーションログを確認しても接続の問題は見つかりませんが、エラーの数とサイズが多いため、利用できるログ記録は数分しかありません。つまり、スタックトレースエラーがたくさんあります。アプリサポートの同僚は、接続に関連してかなりの数のHTTPエラーが発生するとアドバイスしています。これは、何らかの理由でアプリケーションが正しく接続をプールしておらず、その結果、サーバーが繰り返し接続を使い果たしているように思われます。アプリのログを詳しく調べます。これがSQL …

1
SQL Serverの強く型付けされたxml要素の値をXQueryに置き換えます
XMLスキーマコレクション内で次のように定義された要素を指定します。 <xsd:element name="xid"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="32" /> </xsd:restriction> </xsd:simpleType> </xsd:element> XQueryを使用して要素をどのように更新しますか? 要素は、スキーマコレクションのns名前空間内にあります。以下のクエリで要素を更新しようとしています: update cm.item set data.modify( 'declare namespace ns="http://www.anon.com"; replace value of (/ns:*/ns:xid)[1] with "X00011793" cast as element(ns{http://www.anon.com}:xid,#anonymous) ?') where id = 11793 しかし、これは次のエラーを生成します: メッセージ9301、レベル16、状態1、行2 XQuery [cm.item.data.modify()]:このバージョンのサーバーでは、「としてキャスト」は使用できません。「としてキャスト」を使用してください 構文。 キャストを完全に削除してこのクエリを使用する場合: update cm.item set data.modify( 'declare namespace ns="http://www.anon.com"; replace value …

1
このクエリで主(クラスター)キーが使用されないのはなぜですか?
スキーマ構造が次のようなSQL Server 2008 R2テーブルがあります。 CREATE TABLE [dbo].[CDSIM_BE] ( [ID] [bigint] NOT NULL, [EquipmentID] [varchar](50) NOT NULL, [SerialNumber] [varchar](50) NULL, [PyrID] [varchar](50) NULL, [MeasMode] [varchar](50) NULL, [ReadTime] [datetime] NOT NULL, [SubID] [varchar](15) NULL, [ProbePosition] [float] NULL, [DataPoint] [int] NULL, CONSTRAINT [PK_CDSIM_BE] PRIMARY KEY CLUSTERED ([ID] ASC, [EquipmentID] ASC, [ReadTime] ASC) WITH …

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