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

MicrosoftのSQL Serverの2008バージョンに固有の質問には、このタグを使用します。

7
SQL Server 2008 R2でCONCAT関数を使用するにはどうすればよいですか?
CONCATSQL Server 2008 R2の関数を探していました。この機能のリンクを見つけました。しかし、この関数を使用すると、次のエラーが発生します。 メッセージ195、レベル15、状態10、行7 'CONCAT'は、認識されている組み込み関数名ではありません。 いCONCAT関数は、SQL Server 2008 R2で存在していますか? そうでない場合、SQL Server 2008 R2で文字列を連結するにはどうすればよいですか?



5
SQL Serverに列を追加する
SQL Serverテーブルに列を追加する必要があります。データを失うことなくそれを行うことは可能ですか、すでに持っていますか?

10
3から6までのランダムなint値を生成します
Microsoft SQL Serverで最小から最大までのランダムな整数値を生成することは可能ですか(3-9の例、15-99など) 私は知っています、0から最大まで生成できますが、最小境界を増やす方法は? このクエリは、1から6までのランダムな値を生成します。3から6に変更する必要があります。 SELECT table_name, 1.0 + floor(6 * RAND(convert(varbinary, newid()))) magic_number FROM information_schema.tables 5秒後に追加: 愚かな質問、申し訳ありません... SELECT table_name, 3.0 + floor(4 * RAND(convert(varbinary, newid()))) magic_number FROM information_schema.tables

5
SQL NVARCHARおよびVARCHARの制限
すべて、私には大きな(避けられない)動的SQLクエリがあります。選択基準のフィールド数が原因で、動的SQLを含む文字列は4000文字を超えています。今、私は4000の最大セットがあることを理解していNVARCHAR(MAX)ますが、ステートメントのサーバープロファイラーで実行されたSQLを見て DELARE @SQL NVARCHAR(MAX); SET @SQL = 'SomeMassiveString > 4000 chars...'; EXEC(@SQL); GO 動作しているようです(!?)。これもまた大きい別のクエリの場合、この4000制限(!?)に関連付けられているエラーがスローされます。基本的に、この4000制限の後のすべてのSQLがトリムされ、構文エラーが残ります。プロファイラーにはこれがありますが、この動的SQLクエリは完全に表示されています(!?)。 ここで正確に何が起こっているのですか、この@SQL変数をVARCHARに変換して続行するだけですか? 御時間ありがとうございます。 PS また、これらの大きなクエリを表示するために4000文字以上を出力できると便利です。以下は4000に制限されています SELECT CONVERT(XML, @SQL); PRINT(@SQL); 他にクールな方法はありますか?

5
クラスター化と非クラスター化
私のSQL(Server 2008)に関する低レベルの知識は限られており、現在DBAによって挑戦されています。説明させてください(私は私が正しいことを期待して明白な発言を述べましたが、何か問題を見つけた場合は教えてください)シナリオ: 人のための「裁判所命令」を保持するテーブルがあります。テーブル(名前:CourtOrder)を作成したとき、次のように作成しました。 CREATE TABLE dbo.CourtOrder ( CourtOrderID INT NOT NULL IDENTITY(1,1), (Primary Key) PersonId INT NOT NULL, + around 20 other fields of different types. ) 次に、非効率的なインデックスを主キーに適用しました(効率を高めるため)。私の理由は、それが一意のフィールド(主キー)であり、主に選択目的のためにインデックス付けする必要があることです。Select from table where primary key = ... 次に、CLUSTEREDインデックスをPersonIdに適用しました。その理由は、作業の大部分が人の注文を得ているため、特定の人の注文を物理的にグループ化するためでした。そう、select from mytable where personId = ... 私は今これに引っ張られています。クラスタ化インデックスを主キーに配置し、通常のインデックスをpersonIdに配置する必要があると言われました。それは私には非常に奇妙に思えます。まず、クラスター化インデックスを一意の列に配置するのはなぜですか。それはクラスタリングとは何ですか?確かに、それはクラスタ化インデックスの無駄です。通常のインデックスが一意の列で使用されると思っていました。また、インデックスをクラスター化すると、別の列をクラスター化できなくなります(テーブルごとに1つですよね?)。 私が誤りを犯したと言われる理由は、クラスター化されたインデックスをPersonIdに置くと挿入が遅くなると彼らが信じているからです。選択の速度が5%向上すると、挿入と更新の速度が95%低下します。それは正しいですか? personIdをクラスター化するため、PersonIdを挿入または変更するときは常にSQL Serverがデータを再配置する必要があると彼らは言います。 それで私は尋ねました、もしそれがとても遅いのになぜSQLはCLUSTERED INDEXの概念を持っているのでしょうか?彼らが言っているのと同じくらい遅いですか?最適なパフォーマンスを実現するには、どのようにインデックスを設定する必要がありますか?私はSELECTがIN​​SERTよりも使用されていると思っていました...しかし、彼らはINSERTSでロックの問題があると言っています... 誰かが私を助けてくれることを願っています。

12
エラー:「INSERT EXECステートメントはネストできません。」および「INSERT-EXECステートメント内でROLLBACKステートメントを使用することはできません。」これを解決するには?
3つのストアドプロシージャSp1がSp2ありSp3ます。 最初の(Sp1)は2番目の()を実行してSp2返されたデータを保存@tempTB1し、2番目は3番目の(Sp3)を実行してデータを保存します@tempTB2。 実行するSp2と機能し、からすべてのデータが返されますSp3が、に問題がありSp1ます。実行すると、次のエラーが表示されます。 INSERT EXECステートメントはネストできません の場所を変更しようとすると、execute Sp2別のエラーが表示されます。 INSERT-EXECステートメント内でROLLBACKステートメントを使用することはできません。


13
ReferentialConstraintの依存プロパティは、ストアによって生成された列にマップされます
データベースに書き込むときにこのエラーが発生します。 ReferentialConstraintの依存プロパティは、ストアによって生成された列にマップされます。列:「PaymentId」。 public bool PayForItem(int terminalId, double paymentAmount, eNums.MasterCategoryEnum mastercategoryEnum, int CategoryId, int CategoryItemId) { using (var dbEntities = new DatabaseAccess.Schema.EntityModel()) { int pinnumber = 0; long pinid = 1; //getPinId(terminalId,ref pinnumber) ; var payment = new DatabaseAccess.Schema.Payment(); payment.CategoryId = CategoryId; payment.ItemCategoryId = CategoryItemId; payment.PaymentAmount = (decimal)paymentAmount; payment.TerminalId = terminalId; …

7
複数の列で重複を見つけるにはどうすればよいですか?
だから私はこのSQLコードのようなことをしたい: select s.id, s.name,s.city from stuff s group by s.name having count(where city and name are identical) > 1 以下を生成するには(ただし、名前のみまたは都市のみが一致する場所は無視し、両方の列にある必要があります): id name city 904834 jim London 904835 jim London 90145 Fred Paris 90132 Fred Paris 90133 Fred Paris

9
どちらのSQLクエリが高速ですか?結合基準またはWhere句でフィルタリングしますか?
これら2つのクエリを比較します。結合基準またはWHERE句にフィルターを配置する方が高速ですか。可能な限り早い時点で結果セットが減少するため、結合基準の方が高速であると常に感じていましたが、確かではありません。 いくつかのテストを作成して確認しますが、どちらを読んだ方がわかりやすいかについても意見を聞きたかったのです。 クエリ1 SELECT * FROM TableA a INNER JOIN TableXRef x ON a.ID = x.TableAID INNER JOIN TableB b ON x.TableBID = b.ID WHERE a.ID = 1 /* <-- Filter here? */ クエリ2 SELECT * FROM TableA a INNER JOIN TableXRef x ON a.ID = x.TableAID AND a.ID = …


14
SQL Server Management Studio 2008で「スクリプトの生成」タスクを自動化するにはどうすればよいですか?
SQL Server Management Studio 2008でスクリプト生成を自動化したいのですが。 今私がしていることは: データベース、タスク、「スクリプトの生成...」を右クリックします。 必要なすべてのエクスポートオプションを手動で選択し、[オブジェクトの選択]タブで[すべて選択]をクリックします エクスポートフォルダを選択します 最終的に「完了」ボタンを押します このタスクを自動化する方法はありますか? 編集:変更スクリプトではなく、作成スクリプトを生成したい。

3
左外部結合から返されたデフォルトのnull値を置き換える
左外部結合を使用して3つのテーブルからデータを返すMicrosoft SQL Server 2008クエリがあります。多くの場合、2番目と3番目のテーブルにはデータがないため、左外部結合のデフォルトであると思うnullを取得します。selectステートメントのデフォルト値を置き換える方法はありますか?私はテーブル変数に選択できるという回避策がありますが、少し汚れているように感じます。 SELECT iar.Description, iai.Quantity, iai.Quantity * rpl.RegularPrice as 'Retail', iar.Compliance FROM InventoryAdjustmentReason iar LEFT OUTER JOIN InventoryAdjustmentItem iai on (iar.Id = iai.InventoryAdjustmentReasonId) LEFT OUTER JOIN Item i on (i.Id = iai.ItemId) LEFT OUTER JOIN ReportPriceLookup rpl on (rpl.SkuNumber = i.SkuNo) WHERE iar.StoreUse = 'yes' 可能であれば、QuantityとRegularPriceのデフォルトをゼロに設定します。

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