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

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



7
SQL Server Management Studioでのテーブル編集後の変更の保存
以前にSQL Server Management Studioに保存されたテーブルに変更を保存する場合(テーブルにデータがない)、エラーメッセージが表示されます。 変更の保存は許可されていません。行った変更では、次のテーブルを削除して再作成する必要があります。再作成できないテーブルに変更を加えたか、またはテーブルの再作成が必要な変更を保存できないようにするオプションを有効にしました。 テーブルを簡単に編集できない原因は何ですか?または、SQL Server Management Studioが編集用にテーブルを再作成する必要があるのは通常の方法ですか?それは何ですか-この「オプションは変更を保存できないようにする」ですか?

12
SQL Serverの日時フィールドのデフォルト値をタイムスタンプに追加する
私たちのウェブサイトから送信されたフォームを収集するテーブルを持っていますが、何らかの理由で、彼らがテーブルを作成したときに、タイムスタンプをテーブルに入れていませんでした。レコードが入力された正確な日時を入力してください。 私はそれがどこかにあることを知っていますが、デフォルト値を設定する方法を見つけることができないようです(Accessのように、getNow()またはを使用しますNow())が、どこに置くかわかりません。

15
T-SQLで日月年から日付を作成する
2007年12月1日などの個々の部分を持つ日付をSQL Server 2005の日付時刻に変換しようとしています。次のことを試しました。 CAST(DATEPART(year, DATE)+'-'+ DATEPART(month, DATE) +'-'+ DATEPART(day, DATE) AS DATETIME) しかし、これは誤った日付になります。3つの日付値を適切な日時形式に変換する正しい方法は何ですか。


23
TSQL日時フィールドからYYYY-MM-DD形式の日付を取得する方法
SQL ServerからYYYY-MM-DD形式で日付を取得するにはどうすればよいですか?SQL Server 2000以降で使用するには、これが必要です。SQL Serverでこれを実行する簡単な方法はありますか、または結果セットを取得した後、プログラムで変換する方が簡単ですか? Microsoft TechnetでCASTとCONVERTを読みましたが、必要な形式がリストに表示されず、日付形式を変更することはできません。
259 sql-server  tsql 

9
SQL Serverでの内部結合と左結合のパフォーマンス
9つのテーブルでINNER JOINを使用するSQLコマンドを作成しましたが、このコマンドには非常に長い時間がかかります(5分以上)。したがって、私の知っていることにもかかわらず、LEFT JOINのパフォーマンスが向上するため、私の人々はINNER JOINをLEFT JOINに変更するように提案しました。変更後、クエリの速度が大幅に向上しました。 LEFT JOINがINNER JOINより速い理由を教えてください。 :以下のような私のSQLコマンドの外観 SELECT * FROM A INNER JOIN B ON ... INNER JOIN C ON ... INNER JOIN Dなど 更新: これは私のスキーマの概要です。 FROM sidisaleshdrmly a -- NOT HAVE PK AND FK INNER JOIN sidisalesdetmly b -- THIS TABLE ALSO HAVE NO PK AND FK …

7
1つの列に対するSELECT DISTINCT
SQL Serverを使用して、私は... ID SKU PRODUCT ======================= 1 FOO-23 Orange 2 BAR-23 Orange 3 FOO-24 Apple 4 FOO-25 Orange が欲しいです 1 FOO-23 Orange 3 FOO-24 Apple このクエリは私をそこに導きません。1つの列のみでDISTINCTを選択するにはどうすればよいですか? SELECT [ID],[SKU],[PRODUCT] FROM [TestData] WHERE ([PRODUCT] = (SELECT DISTINCT [PRODUCT] FROM [TestData] WHERE ([SKU] LIKE 'FOO-%')) ORDER BY [ID]
258 sql  sql-server  tsql  distinct 


12
SQL Server:クエリは高速ですが、手順が遅い
クエリは高速に実行されます。 DECLARE @SessionGUID uniqueidentifier SET @SessionGUID = 'BCBA333C-B6A1-4155-9833-C495F22EA908' SELECT * FROM Report_Opener WHERE SessionGUID = @SessionGUID ORDER BY CurrencyTypeOrder, Rank サブツリーコスト:0.502 しかし、同じSQLをストアドプロシージャに配置すると、実行速度が遅くなり、実行プランがまったく異なります。 CREATE PROCEDURE dbo.ViewOpener @SessionGUID uniqueidentifier AS SELECT * FROM Report_Opener WHERE SessionGUID = @SessionGUID ORDER BY CurrencyTypeOrder, Rank EXECUTE ViewOpener @SessionGUID サブツリーのコスト:19.2 私は走った sp_recompile ViewOpener そして、それはまだ同じように(悪い)実行されます、そして私はストアドプロシージャもに変更しました CREATE PROCEDURE …

21
テーブルの主キーのベストプラクティスは何ですか?
テーブルを設計するとき、一意であり、主キーにする1つの列を持つ習慣を身につけました。これは、要件に応じて3つの方法で実現されます。 自動インクリメントするID列。 一意の識別子(GUID) 行ID列として機能できる短い文字(x)または整数(またはその他の比較的小さな数値型)列 数値3は、かなり小さなルックアップに使用されます。主に、一意の静的な長さの文字列コード、または年やその他の数値などの数値を持つテーブルを読み取ります。 ほとんどの場合、他のすべてのテーブルには、自動インクリメント整数または一意の識別子の主キーがあります。 質問 :-) 私は最近、一貫した行識別子がなく、主キーが現在さまざまな列にわたってクラスター化されているデータベースでの作業を開始しました。いくつかの例: 日時/文字 日時/整数 datetime / varchar char / nvarchar / nvarchar これに有効なケースはありますか?私は常にこれらのケースのためにアイデンティティまたは一意の識別子の列を定義していたでしょう。 さらに、主キーがまったくない多くのテーブルがあります。これの正当な理由がある場合、それは何ですか? テーブルが設計どおりに設計された理由を理解しようとしていますが、それは私にとって大きな混乱のように見えますが、それには十分な理由があったのかもしれません。 答えを解読するのに役立つ3番目の質問:複合主キーを構成するために複数の列が使用されている場合、代理キー/人工キーと比較して、この方法には特定の利点がありますか?主にパフォーマンス、メンテナンス、管理などについて考えていますか?

5
「テーブルの再作成を必要とする変更の保存を防ぐ」マイナスの影響
前文 今日SQL Server 2008で列を変更し、データ型をcurrency(18,0)などから(19,2)に変更しました。 SQL Serverから、「行った変更には、次のテーブルを削除して再作成する必要があります」というエラーが表示されました。 解答する前に、以下をお読みください。 [ ツール]► [オプション] ►[デザイナー]►[テーブルおよびデータベースデザイナー ]にオプションがあることをすでに知っています。 ...だから答えないで! 実際の質問 私の実際の質問は、次のように何か他のものです: これを行うことの悪影響/考えられる欠点はありますか? このボックスをオフにすると、テーブルは実際に削除されて自動的に再作成されますか? その場合、テーブルはソーステーブルの100%正確なレプリカをコピーしていますか?


12
C#プログラム内でストアドプロシージャを実行する方法
このストアドプロシージャをC#プログラムから実行したい。 SqlServerクエリウィンドウに次のストアドプロシージャを記述し、stored1として保存しました。 use master go create procedure dbo.test as DECLARE @command as varchar(1000), @i int SET @i = 0 WHILE @i < 5 BEGIN Print 'I VALUE ' +CONVERT(varchar(20),@i) EXEC(@command) SET @i = @i + 1 END 編集: using System; using System.Collections.Generic; using System.Text; using System.Data; using System.Data.SqlClient; namespace AutomationApp …

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