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

Microsoft SQL Serverは、リレーショナルデータベース管理システム(RDBMS)です。このタグは、Compact、Express、Azure、Fast-track、APS(以前のPDW)、Azure SQL DWを含むすべてのSQL Serverエディションに使用します。他のタイプのDBMS(MySQL、PostgreSQL、Oracleなど)には、このタグを使用しないでください。データベースに直接関連している場合を除き、このタグをソフトウェアやモバイル開発の問題に使用しないでください。

7
SQL OVER()句-いつ、なぜ役立つのですか?
USE AdventureWorks2008R2; GO SELECT SalesOrderID, ProductID, OrderQty ,SUM(OrderQty) OVER(PARTITION BY SalesOrderID) AS 'Total' ,AVG(OrderQty) OVER(PARTITION BY SalesOrderID) AS 'Avg' ,COUNT(OrderQty) OVER(PARTITION BY SalesOrderID) AS 'Count' ,MIN(OrderQty) OVER(PARTITION BY SalesOrderID) AS 'Min' ,MAX(OrderQty) OVER(PARTITION BY SalesOrderID) AS 'Max' FROM Sales.SalesOrderDetail WHERE SalesOrderID IN(43659,43664); その条項について読みましたが、なぜ必要なのかわかりません。関数Overは何をしますか?何をしPartitioning Byますか?なぜ書き込みでクエリを実行できないのGroup By SalesOrderIDですか?

5
OPTION(RECOMPILE)は常に高速です。どうして?
追加するという奇妙な状況に遭遇しました OPTION (RECOMPILE)クエリすると0.5秒で実行さしましたが、省略するとクエリに5分以上かかります。 これは、クエリがQuery AnalyzerまたはC#プログラムからを介して実行される場合SqlCommand.ExecuteReader()です。呼び出す(または呼び出さない)DBCC FREEPROCCACHEまたはDBCC dropcleanbuffers違いはありません。クエリ結果は常に瞬時に返されOPTION (RECOMPILE)、それがない場合は5分を超えます。クエリは常に[このテストのために]同じパラメータで呼び出されます。 SQL Server 2008を使用しています。 私はSQLの記述にはかなり慣れていますがOPTION、以前にクエリでコマンドを使用したことがなく、このフォーラムの投稿をスキャンするまではプランキャッシュの概念全体に精通していませんでした。投稿から私の理解は、それOPTION (RECOMPILE)は高価な操作です。それは明らかにクエリの新しいルックアップ戦略を作成します。それでは、なぜそれを省略した後続のクエリOPTION (RECOMPILE)が非常に遅いのですか?後続のクエリは、再コンパイルのヒントを含む以前の呼び出しで計算されたルックアップ戦略を利用するべきではありませんか? 呼び出しごとに再コンパイルのヒントを必要とするクエリがあるのは非常に珍しいことですか? エントリーレベルの質問で申し訳ありませんが、私は本当にこれの表裏を作ることができません。 更新:クエリの投稿を求められました... select acctNo,min(date) earliestDate from( select acctNo,tradeDate as date from datafeed_trans where feedid=@feedID and feedDate=@feedDate union select acctNo,feedDate as date from datafeed_money where feedid=@feedID and feedDate=@feedDate union select acctNo,feedDate as date from datafeed_jnl where …

4
T-SQLのIndexOf関数
電子メールアドレス列を指定すると、部分文字列の@記号の位置を見つける必要があります。 indexofT-SQLの文字列の関数は何ですか? 文字列内の部分文字列の位置を返すものを探します。 C#で var s = "abcde"; s.IndexOf('c'); // yields 2
168 sql  sql-server  tsql  string 

8
オブジェクト 'DF __ *'は列 '*'に依存しています-intをdoubleに変更しています
基本的に、EFデータベースに次のプロパティを持つテーブルを取得しました。 public int Id { get; set; } public string Title { get; set; } public string Description { get; set; } public string Image { get; set; } public string WatchUrl { get; set; } public int Year { get; set; } public string Source { get; set; } …

19
SQL Serverの復元エラー-アクセスが拒否されました
ローカルマシンにデータベースを作成してから、tables.baktable というバックアップを作成しましたDataLabTables。 そのバックアップをそのテーブルのないリモートマシンに移動し、復元を試みましたが、次のエラーが発生しました。 System.Data.SqlClient.SqlError: 'c:\ Program Files \ Microsoft SQL Server \ MSSQL.1 \ MSSQL \ DataLabTablesで' RestoreContainer :: ValidateTargetForCreation 'を試行中に、オペレーティングシステムがエラー' 5(Access is denied。) 'を返しました.mdf '。 それが問題である場合、どうすれば私の権利を修正できますか?

9
Visual Studio:ContextSwitchDeadlock
解決できないエラーメッセージが表示されます。Visual Studioまたはデバッガーから発生します。最終的なエラー状態がVS、デバッガー、プログラム、データベースのどれにあるのかわかりません。 これはWindowsアプリです。Webアプリではありません。 VSからの最初のメッセージは、「呼び出しスタックフレームにシンボルが読み込まれていません。ソースコードを表示できません。」というポップアップボックスです。クリックすると、「ContextSwitchDeadlockが検出されました」と、以下に再現された長いメッセージが表示されます。 エラーは、DataTableをスキャンするループで発生します。各行について、テーブルのキー(HIC#)値をSqlCommandのパラメーターとして使用します。このコマンドは、1行を返すSqlDataReaderを作成するために使用されます。データが比較されます。エラーが検出されると、行が2番目のDataTableに追加されます。 エラーは、プロシージャの実行にかかる時間(つまり60秒後)に関連しているようであり、エラーの数ではありません。メモリの問題ではないと思います。ループ内では変数は宣言されていません。作成される唯一のオブジェクトはSqlDataReadersで、構造体の使用にあります。Add System.GC.Collect()は効果がありませんでした。 dbは、同じラップトップ上のSqlServerサイトです。 フォームには派手なギズモやガジェットはありません。 私は以前に何十回もやったこととは大きく異なるこのprocの何も知りません。私は以前にエラーを見たことがありますが、一貫してではありません。 何かアイデアはありますか? 完全なエラーテキスト: CLRは、COMコンテキスト0x1a0b88からCOMコンテキスト0x1a0cf8に60秒間遷移できませんでした。宛先のコンテキスト/アパートメントを所有するスレッドは、ほとんどの場合、非ポンプ待機を実行しているか、Windowsメッセージをポンプ送信せずに非常に長時間実行されている操作を処理しています。この状況は通常、パフォーマンスに悪影響を及ぼし、アプリケーションが応答しなくなったり、メモリ使用量が時間の経過とともに継続的に蓄積したりする可能性があります。この問題を回避するには、すべてのシングルスレッドアパートメント(STA)スレッドでポンピング待機プリミティブ(CoWaitForMultipleHandlesなど)を使用し、長時間実行される操作中に定期的にメッセージをポンピングする必要があります。


13
SQLで複数の列を更新する
挿入ステートメントが使用されるのと同じ方法でSQLサーバーの複数の列を更新する方法はありますか? 何かのようなもの: Update table1 set (a,b,c,d,e,f,g,h,i,j,k)= (t2.a,t2.b,t2.c,t2.d,t2.e,t2.f,t2.g,t2.h,t2.i,t2.j,t2.k) from table2 t2 where table1.id=table2.id または、そうではなく、そのようなもの: update table set a=t2.a,b=t2.b etc 100以上の列がある場合、これを書くのはかなり面倒です。

10
MS SQL Server Management Studioを使用せずにSQL Serverのデフォルトデータベースを変更するにはどうすればよいですか?
SQL Serverからデータベースを削除しましたが、削除したデータベースをデフォルトとして使用するようにログインが設定されていることがわかりました。SQL Server Management Studioに接続するには、接続ダイアログの[オプション]ボタンを使用して、接続するデータベースとして[マスター]を選択します。ただし、オブジェクトエクスプローラーで何かを実行しようとすると、デフォルトのデータベースを使用して接続しようとして失敗します。 オブジェクトエクスプローラを使用せずにデフォルトのデータベースを設定する方法を知っている人はいますか?

5
データベースとスキーマの違い
SQL Serverのデータベースとスキーマの違いは何ですか?どちらもテーブルとデータのコンテナです。 スキーマが削除された場合、そのスキーマに含まれるすべてのテーブルも自動的に削除されますか、それともデータベースが削除されるときに削除されますか?

8
WHERE句での列エイリアスの参照
SELECT logcount, logUserID, maxlogtm , DATEDIFF(day, maxlogtm, GETDATE()) AS daysdiff FROM statslogsummary WHERE daysdiff > 120 私は得る 「無効な列名daysdiff」。 Maxlogtmは日時フィールドです。それは私を夢中にさせる小さなものです。

11
LEFT OUTER JOINはどのようにして左のテーブルにあるよりも多くのレコードを返すことができますか?
私は非常に基本的なLEFT OUTER JOINを使用して、左側のテーブルのすべての結果と、より大きなテーブルのいくつかの追加情報を返します。左側のテーブルには4935レコードが含まれていますが、それを追加テーブルにLEFT OUTER JOINすると、レコード数が大幅に増えます。 LEFT OUTER JOINが左のテーブルのすべてのレコードを、右のテーブルの一致したレコードと一致しないすべての行のnull値とともに返すことは、私が知っている限り絶対的な福音です。左の表にあるよりも多くの行を返すことは不可能ですが、それはまったく同じです。 SQLクエリは次のとおりです。 SELECT SUSP.Susp_Visits.SuspReason, SUSP.Susp_Visits.SiteID FROM SUSP.Susp_Visits LEFT OUTER JOIN DATA.Dim_Member ON SUSP.Susp_Visits.MemID = DATA.Dim_Member.MembershipNum おそらく、構文に誤りを犯したか、LEFT OUTER JOINの理解が不完全である可能性があります。うまくいけば、これがどのように発生するのか説明できますか? 追記 素晴らしい回答をありがとう、左外部結合の私の理解ははるかに良くなりましたが、誰でもこのクエリを変更して、左のテーブルに存在するのと同じ数のレコードのみが返されるようにする方法を提案できますか? このクエリは純粋にレポートを生成するためのものであり、重複する一致は単に問題を混乱させます。 /追記

5
SQL Server 2008でユーザー定義テーブルタイプの存在を確認する方法
ユーザー定義のテーブルタイプがあります。パッチOBJECT_ID(name, type)機能で編集する前に、その存在を確認したい。 ユーザー定義のテーブルタイプに列挙typeから何を渡す必要がありますか? N'U' ユーザー定義テーブルのように動作しません、すなわち IF OBJECT_ID(N'MyType', N'U') IS NOT NULL

23
SQL Azureデータベースをローカル開発サーバーにコピーするにはどうすればよいですか?
SQL Azureデータベースを開発マシンにコピーする方法を知っている人はいますか?クラウドに開発用データベースを配置するのにお金をかけたくないのですが、それが本番データを取得するための最良の方法です。本番データベースを新しい開発データベースにコピーしましたが、同じデータベースをローカルにしたいと思います。 助言がありますか?

15
日時の挿入中に文字列から日付や時刻を変換するときに変換に失敗しました
次のようにテーブルを作成しようとしましたが、 create table table1(date1 datetime,date2 datetime); まず、以下のように値を挿入してみましたが、 insert into table1 values('21-02-2012 6:10:00 PM','01-01-2001 12:00:00 AM'); それは言ってエラーを与えました、 varcharをdatetimeに変換できません 次に、私たちのスタックオーバーフローによって提案された投稿の1つとして、以下のフォーマットを試しました、 insert into table1 values(convert(datetime,'21-02-2012 6:10:00 PM',5) ,convert(datetime,'01-01-2001 12:00:00 AM',5)); しかし、まだエラーが出ています、 文字列から日付や時刻を変換するときに変換に失敗しました 助言がありますか?
164 sql  sql-server 

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