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

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

19
テーブル名に「tbl」プレフィックスを追加することは本当に問題ですか?
私はいくつかのブレント・オザールのビデオを見ています(例えば、このような)、彼はテーブルの前に‘tbl’またはを付けないことを提案してい‘TBL’ます。 インターネット上で、ドキュメントに何も追加されず、「読むのに時間がかかる」というブログを見つけました。 質問と考慮事項 これは本当に問題ですか?なぜなら、最初のdbaジョブ以来、テーブルの前に 'tbl'を付けているからです(シニアDBAから組織のためにそれを行うように言われました)。 これは私が取り除く必要があるものですか?いくつかのテストを行い、非常に大きなテーブルをコピーして「tbl」プレフィックスを付け、もう一方のテーブルはそのままにして、パフォーマンスの問題に気付きませんでした。

5
INTでTINYINTを使用する場合
一般に、私は常にIntsを使用します。ただし、データの保存が保証される最小のデータ型を使用する必要があるため、理論的にはこれがベストプラクティスではないことを知っています。 たとえば、tinyint保存するデータが1、0、またはnullのみであることがわかっている場合に使用することをお勧めします(2または3に拡張する可能性は非常に小さい)。 ただし、これを行うために知っている唯一の理由は、4バイトの代わりに1バイトを使用して、ストレージの目的のためです。 使用しての影響は何ですかtinyint(またはsmallintあるいはbigint単に上)intハードドライブの容量を節約する以外は、?

3
常にトランザクションを作成することは悪い習慣ですか?
常にトランザクションを作成することは悪い習慣ですか? たとえば、1つだけのトランザクションを作成することをお勧めしSELECTますか? トランザクションが本当に必要でない場合、トランザクションを作成するコストはいくらですか? のような分離レベルを使用している場合でも、READ UNCOMMITTEDそれは悪い習慣ですか?

6
グループごとにn行を取得する
結果セットの各グループから多くの行を選択する必要がよくあります。 たとえば、顧客ごとに最近の注文値の最高または最低を「n」個リストしたい場合があります。 より複雑な場合、リストする行の数はグループごとに異なる場合があります(グループ化/親レコードの属性によって定義されます)。この部分は間違いなくオプション/追加のクレジットのためであり、人々が答えることを思いとどまらせることを意図していません。 SQL Server 2005以降でこれらのタイプの問題を解決するための主なオプションは何ですか?各方法の主な長所と短所は何ですか? AdventureWorksの例(わかりやすくするため、オプション) TransactionHistoryMからRまでの文字で始まる製品ごとに、テーブルから最新の5つのトランザクション日付とIDをリストします。 繰り返しますが、n製品ごとに履歴行がnあり、DaysToManufacture製品属性の5倍です。 同様に、製品ごとに正確に1行の履歴行が必要な特別な場合(TransactionDate、タイブレークでの最新の単一エントリ)TransactionID。



5
SQL Serverのインプレースアップグレードは、以前と同じように不適切にアドバイスされていますか?
私はSQL Server 6.5以降、SQL Serverのオンとオフを操作してきました。私の頭に残っている古いアドバイスは、インプレースアップグレードを行うことではありませんでした。 現在、2008 R2 DEVおよびTESTシステムをSQL Server 2012にアップグレードしていますが、同じハードウェアを使用する必要があります。Reporting Servicesの構成を復元する必要がないという考えは非常に魅力的であり、実際には時間的に賢明です。関係する分析サービスや異常なもの、非標準のものはありません。データベースエンジンとレポートサービスのみがインストールされます。 インプレースアップグレードで深刻な問題を経験した人はいますか?または、インプレースアップグレードに関する自分の立場を再評価する必要がありますか?

4
クエリが昨日よりも突然遅くなるのはなぜですか?
[挨拶] (チェックしてください) [ ] Well trained professional, [ ] Casual reader, [ ] Hapless wanderer, 私は持っています(該当するものすべてをチェックしてください) [ ] query [ ] stored procedure [ ] database thing maybe 正常に実行されていた(該当する場合) [ ] yesterday [ ] in recent memory [ ] at some point しかし、今は突然遅くなっています。 既にブロックされていないこと、および長期にわたるメンテナンスタスク、レポート、またはその他の帯域外プロセスの犠牲になっていないことを確認しました。 問題は何ですか、どうすればよいですか、また、ヘルプを得るためにどのような情報を提供できますか? [*Insert appropriate closing remarks*]

5
どのデータベースが何十億レコードのストレージを処理できますか?
私たちは、膨大な量を収集するnetflowデータをキャプチャして分析するツールの開発を検討しています。毎日約14億のフローレコードをキャプチャします。これは、json形式では次のようになります。 { "tcp_flags": "0", "src_as": "54321", "nexthop": "1.2.3.4", "unix_secs": "1352234521", "src_mask": "23", "tos": "0", "prot": "6", "input": "105", "doctets": "186", "engine_type": "0", "exaddr": "2.3.4.5", "engine_id": "2", "srcaddr": "9.8.7.6", "dst_as": "12345", "unix_nsecs": "752265174", "sysuptime": "2943529544", "dst_mask": "24", "dstport": "80", "last": "2943523241", "srcport": "52672", "dpkts": "4", "output": "111", "dstaddr": "6.5.4.3", "first": "2943517993" …


4
<>と!=がSQL Serverのパフォーマンスで同一である信頼できるソース
SO に関するこの回答を検討してください。これにより、&lt;&gt;オペレーターに関する質問者は次のことを安心できます。 &lt;&gt;は...と同じ!=です。 しかし、その後、コメンターがパイプを使って言います: 機能的には同じであることは事実です。ただし、SQLオプティマイザーがそれらを使用する方法は大きく異なります。= /!=は単純にtrue / falseとして評価されますが、&lt;&gt;はエンジンが値がより大きいか小さいかを調べて確認する必要があることを意味し、パフォーマンスのオーバーヘッドが大きくなります。高価なクエリを作成する際に考慮すべき点があります。 私はこれが間違っていると確信していますが、潜在的な懐疑論者に対処するために、これらの演算子が単に機能的に同じではなく、すべての面で同一であることを証明するための信頼できるソースまたは正規のソースを提供できる人はいないでしょうか?

2
別のドメインでWindows認証を使用してSQL Serverに接続する
別のドメインのVPN上のリモートSQL Serverに接続しようとしています。SQL Serverにサーバー名を入力し、[追加の接続パラメーター]を選択して、学校で必要なものを追加します。 Integrated Security=SSPI; User ID=DOMAIN\username; Password=Password 次のエラーが表示されます。 ログインに失敗しました。ログインは信頼できないドメインからのものであり、Windows認証では使用できません。

6
SQL Serverは現在使用中のため、データベース<dbname>を削除できませんが、セッションは表示されません
データベースを削除しようとすると、「データベース "dbname"は現在使用中のため削除できません」というエラーが表示されます。ただし、実行するとsp_who2、このデータベースに接続されているセッションは絶対にありません。また、データベースをに設定しましたsingle_user mode with rollback immediate。 なぜこうなった?

1
ターゲット表のサブセットをマージします
MERGEステートメントを使用してテーブルの行を挿入または削除しようとしていますが、それらの行のサブセットのみを操作したいです。のドキュメントにMERGEは、かなり強い言葉で警告があります: マッチングの目的で使用されるターゲットテーブルの列のみを指定することが重要です。つまり、ソース表の対応する列と比較されるターゲット表の列を指定します。AND NOT target_table.column_x = valueを指定するなど、ON句でターゲットテーブルの行をフィルタリングしてクエリのパフォーマンスを向上させないでください。これを行うと、予期しない誤った結果が返される場合があります。 しかし、これはまさにMERGE仕事をするために私がしなければならないように見えるものです。 私が持っているデータは、次のようなアイテムとカテゴリ(たとえば、どのアイテムがどのカテゴリに含まれているか)の標準的な多対多の結合テーブルです。 CategoryId ItemId ========== ====== 1 1 1 2 1 3 2 1 2 3 3 5 3 6 4 5 私がする必要があるのは、特定のカテゴリのすべての行を新しいアイテムのリストで効果的に置き換えることです。これを行う最初の試みは次のようになります。 MERGE INTO CategoryItem AS TARGET USING ( SELECT ItemId FROM SomeExternalDataSource WHERE CategoryId = 2 ) AS SOURCE ON SOURCE.ItemId = …

6
sql-serverでコミットスナップショットの読み取りを有効にした場合、どのようなリスクがありますか?
ここでは、行ごとにいくつかの追加データが保存されるため、パフォーマンスの低下が見られる可能性があることを読みましたが、他にどのようなリスクがありますか? 例えば。これはデータベースの回復に影響しますか?これを利用するために私たちがしなければならないことは他にありますか? これらのコマンドを実行する予定です。 ALTER DATABASE DatabaseName SET READ_COMMITTED_SNAPSHOT ON ALTER DATABASE DatabaseName SET ALLOW_SNAPSHOT_ISOLATION ON これにより、1つのトランザクションが他のトランザクションを更新している場合でも古いデータを読み取ることができるオラクルに近いものが得られると思います。これは正しいです? SQL Server 2005のロックの問題にうんざりしているので、これを検討しています。これにより、ユーザーが時折発生するデッドロックを減らし、アプリケーションの全体的なパフォーマンスを向上させ、恐れ。

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