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

SQL Server 2005(メジャービルドバージョン9.00.xxxx)。sql-serverにもタグを付けてください。

3
SQL 2005ストアドプロシージャにエラー処理を追加する最良の方法は何ですか?
ストアドプロシージャを十分に堅牢にし、非常に適切にスケーリングし、エラー処理を含めるための良い方法は何ですか? さらに、ストアドプロシージャで複数のエラーシナリオを処理し、呼び出し元のアプリに意味のあるエラー情報を返すインテリジェントなフィードバックシステムを使用するための最良の方法は何ですか?

8
一意のIDを明示的に生成するID列またはUDF?
私は、一意のIDを明示的に生成するUDFからPRIMARY KEY、Identity Columnsを使用する方が良いかどうかについて議論しています。 Identity列について議論しています。 私のパートナーは、手動で値を生成することを主張しています、と彼は主張します UDFを作成できる別のテーブルにUDFを配置する リソースをロックする ID_Valueによって呼び出される1つのフィールドでIDテーブルをインクリメントする1 これをグローバル一意識別子として使用します またはid+1、挿入時にテーブルに 識別制約のないサーバーや環境間でデータを移動する方が簡単です。データがあるDBから、ステージングデータやダミーデータなどの別の類似のDBに移動する。非本番環境でのテストでは、すべてのレコードを昨日からテスト用のステージングまで引き下げたい場合があります。 どの実装がより意味がありますか?

1
SELECTステートメントの各行に異なるランダムな値を割り当てるにはどうすればよいですか?
このコードを見てください: create table #t1( id int identity (1,1), val varchar(10) ); insert into #t1 values ('a'); insert into #t1 values ('b'); insert into #t1 values ('c'); insert into #t1 values ('d'); 今、これを実行するたびに select *, ( select top 1 val from #t1 order by NEWID()) rnd from #t1 order by 1; …

1
いつDBCC CLEANTABLEを実行してスペースを再利用する必要があるかを判断する信頼できる方法はありますか?
最近、ファイル使用率が80%に近づいたときにファイルを単に成長させるのではなく、ヒープのデフラグ、クラスター化インデックスの追加と削除、行またはページの圧縮などの通常のトリックを介してスペースを再利用することに積極的に取り組んできました。 ただし、DBCC CLEANTABLEを実行してさらに多くのスペースを取り戻すことができたケースがいくつかあります。私の環境には数百のデータベースがあるため、ユーザーがそれぞれのデータベースで何をしているのかを知ることは不可能であり、固定長の列の削除に関連する変更があることは完全に許容できます。私が書いたオブジェクトスペース使用率スクリプトの行数とページ数を比較することで、これらの機会を見つけました。このようなシナリオの検出を自動化することで、これをさらに一歩進めたいと思います。 私が知りたいのは、このような機会を積極的に監視している人がいるなら、そうだとしたら、具体的に何を探しますか? 私の考えは、行の最大サイズと最小サイズ、テーブルの行数、割り当てられたページ数、および使用されたページ数を収集するという線に沿って何かを記述し、いくつかの基本的な計算を行って結果を記録することでした「期待される」はずの外にあります。

1
IDENTITY_INSERTは並行性にどのように影響しますか?
投稿に不具合があり、サポートが終了したサードパーティのSAPアドオンを使用してお客様を支援しようとしています。 特定の状況下では、投稿キューテーブルから投稿アーカイブテーブルへの不完全な投稿をアーカイブします。これらのアーカイブされた結果をキューに戻す必要があります。 キューIDはID列であり、同じにしたいと思います。 問題は、identity_insertをオン/挿入/ identity_insertオフにすると、キューエントリを作成し、ID列が自動的に生成されることを期待するプロセスとの同時実行性に関して何が期待できるでしょうか。 そのような振る舞いを実証するための最良の方法へのポインタも同様に大歓迎です。

1
DMV sys.dm_exec_query_statsのlast_worker_timeとlast_elapsed_timeの違いは何ですか?
DMV sys.dm_exec_query_statsのlast_worker_timeとlast_elapsed_timeの意味は何ですか?それらの違いは何ですか? クエリの下で起動したとき SELECT TOP 20 qs.last_worker_time, qs.last_worker_time/1000000 last_worker_time_in_S, qs.last_elapsed_time, qs.last_elapsed_time/1000000 last_elapsed_time_in_S FROM sys.dm_exec_query_stats qs order by qs.last_worker_time desc 以下のような結果になります。 私が気づいたのは、両方が等しいか、経過時間がワーカー時間よりも長いことです。両方の意味を理解したいので、パフォーマンスのチューニングにも役立ちます。

7
別の文字列内の文字列のすべての位置を見つける方法
patindexテーブルまたは変数ですべてのポジションを見つけるにはどうすればよいですか? declare @name nvarchar(max) set @name ='ali reza dar yek shabe barani ba yek ' + 'dokhtare khoshkel be disco raft va ali baraye' + ' 1 saat anja bud va sepas... ali...' select patindex('%ali%',@name) as pos これは戻ります1が、すべての結果が必要です。例: pos === 1 74 113

3
データベースサイズ-MDFが大きすぎますか?
約2.9TbのデータをホストするSQL Server 2005データベースを維持しています(2 x 1.45Tb-RAWスキーマとANALYSISスキーマがあるため、基本的にデータの2つのコピーが取り込まれます)。リカバリモデルはシンプルで、6 .ldfGBです。 何らかの理由で、.mdf7.5Tbです。現在、ANALYSISテーブルには2〜3列しか追加されておらずNVARCHAR(MAX)、私が誤って理解している可能性があるため(間違っている場合は修正してください)、追加のスペース割り当てを引き起こしている可能性がある列は多くありません。これは、データベースを圧縮した直後です。その前は、約9 TBでした。何かご意見は? そして、追加の質問がある場合はお知らせください-私はデータベース管理と最適化の取り組みに非常に慣れていません(私は通常、仕事のこの側は行いません:))。 どうもありがとう! アンドリヤ

3
Express Editionのサイズ制限に達しているかどうかを確認するにはどうすればよいですか?
私は混乱しています。AFAIK SQL Server 2005 Expressには、4GBのデータベース データサイズの制限があります。ただし、次の結果が得られsp_spaceusedます。 DBがサイズ制限に達しているかどうかを確認するにはどうすればよいですか? 未割り当て領域はspace left制限に達するまでですか? 残りのスペースはどれくらいありますか? ないindex_size限度で数えますか?

1
SQL Server 2000から2008から2012
現在、SQL Server 2000から2008に移行しています。2000年から2008年にかけて多くの変更が加えられたため、コードやスクリプトに多くの変更を加えています。これらの変更を行いながら、知りたいのは-2012年にも互換性を持たせるために今できることはありますか?同時に。2012年から2008年などの下位互換性のある変更が少なくともあります。これを行いたいのは、2008年から2012年に移行することを決定したときに、将来(3〜4年後)の労力を最小限に抑えるためです。私ができること、または知っておくべきことは何ですか?

3
マージレプリケーションのアーティクル数のハード制限?
背景のビット。マージレプリケーションを使用するアプリを開発しました。現在、約212の記事を公開していますが、256の記事数の制限に収まっているようです。(サーバーではSQL Standard 2005、サブスクライバーレベルでは2005 Expressを使用します。) 私たちは新しいバージョンを開発中であり、新しいデータベースはゼロから構築されています。これには、SQL 2008 R2 Standardサーバー側とExpress 2008 R2の最小システム要件があり、クライアント側でも同様です。公開された記事と同じ256カウント制限。(はい、2012年もサポートしますが、制限は同じです) 問題は、新しいバージョンで400以上の記事を公開してテストに成功し、すべてが機能的にテストされるところです(パブの作成、スナップショットとサブスクライバーの作成、およびレプリケーション自体)。他の誰かが以前にカウント制限を超えたことがありますか?これはソフト推奨制限に過ぎませんか?パブリケーションの作成中、またはサブスクライバーの作成中に、エラーは発生していません。 この記事によると:http : //msdn.microsoft.com/en-us/library/ms143432%28v=sql.105%29 Microsoftからのコールバックを待っていますが、SQLのどのバージョンでも、これを以前に見たことがあるかどうか知りたいのですが。

2
文字列から数値以外の文字を削除するにはどうすればよいですか?
ユーザーがボックスに検索語を入力すると、その値がストアドプロシージャに渡され、データベース内のいくつかの異なるフィールドに対してチェックされます。これらのフィールドは、常に同じデータ型であるとは限りません。 1つのフィールド(電話番号)はすべての数字で構成されているため、チェックすると、.Net CLR関数を使用して文字列からすべての非数値文字が削除されます。 SELECT dbo.RegexReplace('(123)123-4567', '[^0-9]', '') 問題は、この関数が次のエラーで突然動作を停止することです。 メッセージ6533、レベル16、状態49、行2 AppDomain MyDBName.dbo [runtime] .1575はエスカレーションポリシーによってアンロードされ、 アプリケーションの一貫性。重要なリソースへのアクセス中にメモリ不足が発生しました。 System.Threading.ThreadAbortException:タイプの例外 'System.Threading.ThreadAbortException'がスローされました。 System.Threading.ThreadAbortException: このエラーについてMSDNに投稿された提案を試しましたが、まだ問題が発生しています。現時点では、64ビットサーバーに切り替えることはできません。 サーバーを再起動すると、サーバーが保持していたメモリが解放されることは知っていますが、本番環境では実行可能なソリューションではありません。 T-SQLのみを使用してSQL Server 2005で文字列から数値以外の文字を取り除く方法はありますか?

2
連続処理中のインデックスの断片化
SQL Server 2005 900Mのレコードテーブルで約350Mのレコードを継続的に処理できる必要があります。処理するレコードを選択するために使用しているクエリは、処理中に著しく断片化され、インデックスを再構築するために処理を停止する必要があります。疑似データモデルとクエリ... /**************************************/ CREATE TABLE [Table] ( [PrimaryKeyId] [INT] IDENTITY(1,1) NOT NULL PRIMARY KEY CLUSTERED, [ForeignKeyId] [INT] NOT NULL, /* more columns ... */ [DataType] [CHAR](1) NOT NULL, [DataStatus] [DATETIME] NULL, [ProcessDate] [DATETIME] NOT NULL, [ProcessThreadId] VARCHAR (100) NULL ); CREATE NONCLUSTERED INDEX [Idx] ON [Table] ( [DataType], …

2
SQL 2005:インデックスの再構築ジョブがデータベースログファイルをどれだけ拡張できるかを判断できますか?
SQL Server 2005で、すべてのデータベースがフルモード(1時間ごとのトランザクションログバックアップを使用)である場合、データベースのすべてのインデックスを再構築してデータベースのログファイルを拡張できるかどうかを判断できますか?そして、それはどれくらい成長することができますか? 正解がない場合は、どのような指示もいただければ幸いです。 前もって感謝します。

10
データベースを初期サイズ以下に縮小する
ライブの30GBコピーであるSQL Server 2005開発データベースを持っています。devで不要なデータをいくつか削除しました。これにより、使用されるデータファイルスペースが20GBに下がります。したがって、約33%が未使用です。 スペースを再利用する必要があります。これにより、サーバーに2番目の開発DBを(カットダウンバージョンに基づいて)配置できます。ただし、スペースを取り戻すことはできません。次のようにしました。 ファイルの初期サイズSMS2_Dataは30GBです。 DBCC SHRINKFILE (N'SMS2_Data' , 0, TRUNCATEONLY) に続く DBCC SHRINKFILE (N'SMS2_Data' , 19500) 喜びがない。バックアップを作成して、初期サイズの小さい新しいDBを作成してから復元しようとしましたが、初期サイズが上書きされて喜びません。また試しました: ALTER DATABASE SMS2HazSub MODIFY FILE (NAME = 'SMS2_Data', SIZE = 20000) これは誤り、言った: MODIFY FILEが失敗しました。指定されたサイズは現在のサイズよりも小さいです。 20800を試してから29000(29GB)まで上がり続けましたが、それでも変更できません。 縮小を行った後、回復モードをからFULLに変更しSIMPLEました。喜びがない。 いくつかのTEXT分野と関係があると思いました。システム全体で約6つあります。テストとして、すべてを削除してからファイルを縮小しましたが、変更はありませんでした。 残っている唯一のオプションは、データを別のDBに再インポートすることです。ライブDBで実行する必要があるため、これは実用的ではなく、リスクが高すぎます。半定期的にライブDBのコピーを取得し、dev / testを上書きします。500テーブルのようなものがあります。新しいDBにデータをエクスポートするリスクのない方法を教えてください。 データを別のファイルに移動しようとすると、データの5%を除くすべてがコピーされました。これが、すべてのテキスト列を削除しようとした理由です。 サーバーは互換モード90ですが、SP2です。これで、すべてのテーブルのインデックスの再作成、データベースのバックアップ、ファイルの圧縮、データベースの圧縮の3回を実行しました。まだ喜びはありません。 EXECUTE sp_spaceused 戻り値: database_name database_size unallocated space SMS2Tests 31453.94 MB …

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