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

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

2
データが失われる可能性があるため、値を変換できませんでした[終了]
閉じた。この質問には詳細または明確さが必要です。現在、回答を受け付けていません。 この質問を改善したいですか?詳細を追加し、この投稿を編集して問題を明確にしてください。 5年前に閉鎖されました。 まず、これが重複した質問ではなく、その問題の潜在的な重複でもないことを明確にすることから始めましょう。StackOverflowとDBA Stack Exchangeでこの問題の既存のすべてのバリアントに対するすべての答えを、運がなくても実装しようとしました。 私は過去2日間この問題に取り組んでおり(1日約7時間問題に取り組んでいます)、問題をグーグルで解決した後でも、他の誰も私の問題とまったく同じ変種を持っているようには見えません。 私は何をしようとしていますか? SSISで、CSVファイルから読み取り、そこから行をOLE DBデータベースに挿入しようとしています。そのため、以下に示すように、私はこれまでで最も簡単なセットアップを行いました。 Flat File Source -CSV行を読み取ります。 Derived Column -現在は何もしません(実験のためだけにあります)。 Data Conversion -現在は何もしません(実験のためだけにあります)。 OLE DB Destination -データベースに行を格納します。 実行しようとすると、OLE DB宛先で実行が停止し、次のエラーメッセージが表示されます。 入力「OLE DB宛先入力」(51)の入力列「金額」(187)でエラーが発生しました。返された列のステータスは、「データが失われた可能性があるため、値を変換できませんでした。」でした。 失敗した列(Amount)は現在タイプDT_STRです。それが今一番信頼しているタイプのようです。 私は何を試しましたか? Flat File Connection失敗している列で「推奨タイプ」関数を使用してみました。これにより、Single byte signed intデータ型が推奨されました。 で停止し、私のフラットファイルソース。 エラーは、データ変換が失敗したことです。列「金額」のデータ変換は、ステータス値2およびステータステキスト「データが失われる可能性があるため、値を変換できませんでした。」を返しました。 を使用しDerived Columnて列をにキャストしようとしましたDT_I4。 で停止し、私の派生列。 エラーは、データ変換が失敗したことです。列「金額」のデータ変換は、ステータス値2およびステータステキスト「データが失われる可能性があるため、値を変換できませんでした。」を返しました。 を使用しData Conversionて列の値をにキャストしようとしましたDT_I4。 私で停止しますData Conversion。 エラーは、データ変換が失敗したことです。列「金額」のデータ変換は、ステータス値2およびステータステキスト「データが失われる可能性があるため、値を変換できませんでした。」を返しました。 DT_STRソースと宛先の値の長さを変更してみました。 設定に応じて、ソースまたは宛先で停止します。 私の代わりに使用してExcelソース・コネクターを使用して接続しようとしたとすることなく、IMEX=1接続文字列に追加します。運がありません。 …

1
SQL Serverで既存のデータベーススナップショットを照会するにはどうすればよいですか?
特定のデータベースに、そこから作成されたデータベーススナップショットがあるかどうかを判断できるt-sqlクエリを作成しようとしています。 たとえば、次のようなスナップショットを作成するとします。 CREATE DATABASE [DatabaseA_Snapshot] ON (NAME=DatabaseA, FileName='<whatever>') AS SNAPSHOT OF [DatabaseA] そのスナップショットの存在を後でもう一度クエリできる方法はありますか?sys.databasesに表示されることがわかりますが、DatabaseAから作成されたデータベーススナップショットであると判断するのに役立つ情報が見つかりませんでした。 SQL Server Management Studioのオブジェクトエクスプローラーは、 'データベーススナップショット'フォルダーの下に配置するため、これらを通常のデータベースと区別するいくつかの方法があります。

2
UPDATEステートメントのOUTPUTをローカル変数に送る
私はこれをしたいと思います: DECLARE @Id INT; UPDATE Logins SET SomeField = 'some value' OUTPUT @Id = Id WHERE EmailAddress = @EmailAddress -- this is a parameter of the sproc これは可能ですか?ローカルテーブル変数を宣言してそこに出力を送信できることはわかっていますが、可能であればスキップすることをお勧めします

5
トリガーでINSERTEDテーブルとDELETEDテーブルを結合する恐ろしいパフォーマンス
特定の列が特定の値から他の値に変更されるのを監視するテーブルにUPDATEトリガーがあります。これが発生すると、単一のUPDATEステートメントを介して別のテーブル内の関連データを更新します。 トリガーが最初に行うことは、更新された行にこの列の値が問題の値から変更されているかどうかを確認することです。単にINSERTEDをDELETEDに結合し、その列の値を比較します。適格なものがなければ、早期にベイルアウトするため、UPDATEステートメントは実行されません。 IF NOT EXISTS ( SELECT TOP 1 i.CUSTNMBR FROM INSERTED i INNER JOIN DELETED d ON i.CUSTNMBR = d.CUSTNMBR WHERE d.CUSTCLAS = 'Misc' AND i.CUSTCLAS != 'Misc' ) RETURN この場合、CUSTNMBRは基礎となるテーブルの主キーです。このテーブルで大規模な更新(たとえば、5000行以上)を実行すると、CUSTCLAS列に触れていなくても、このステートメントでAGESがかかります。プロファイラーでこのステートメントが数分間停止するのを見ることができます。 実行計画は奇妙です。挿入されたスキャンが3,714回実行され、出力行が約1,850万行あります。CUSTCLAS列のフィルターを通過します。これは(ネストされたループを介して)削除されたスキャン(これもCUSTCLASでフィルタリングされます)に結合されます。これは1回だけ実行され、5000出力行を持ちます。 これを引き起こすために私はここでどんな馬鹿げたことをしていますか?トリガーは絶対に複数行の更新を適切に処理する必要があることに注意してください。 編集: 私はこれもこのように書いてみました(EXISTSが不愉快なことをしている場合に備えて)、それでも同じくらいひどいです。 DECLARE @CUSTNMBR varchar(31) SELECT TOP 1 @CUSTNMBR = i.CUSTNMBR FROM INSERTED i INNER JOIN …

4
RESTORE HEADERONLYからフィールドを抽出する
「RESTORE HEADERONLY」を使用して、復元しようとしているバックアップが作成された日付を取得しようとしています。 コマンド: RESTORE HEADERONLY FROM DISK = '<path to .bak file>' クエリアナライザーで正常に動作し、50列などの結果セットを提供します。 問題は、実際にコードからこれにアクセスすることです。 これを一時テーブルに入れるには、50:ish列の1つ1つを宣言し、それに挿入してexec、そこから必要な値を取得します。 問題は、将来のバージョンで列を追加する場合、非常に脆弱なソリューションのように思われるので、結果セット全体を一時テーブルとして宣言する必要がないようにしたいということです。 すべての列を宣言せずに、この結果セットから単一の列を取得する方法はありますか?

3
T-SQLでCASTを使用したパフォーマンスヒット
指定されたフィールドに対して一般的にSQL条件ステートメントを発行するSQLジェネレーターがあります(説明のために、次のようにラベルを付けますmyField)。 myFieldタイプがの場合NVARCHAR、次のように、上記のフィールドと文字列を比較できますmyField = 'foo'。 ただし、これはタイプのフィールドでは機能しませんNTEXT。したがって、キャストとの比較を行う必要があります CAST(myField as NVARCHAR(MAX)) = 'foo'。これmyFieldは、タイプがNVARCHARまたはの場合に実際に機能しNTEXTます。 すでにタイプのあるフィールドで前述のキャストを実行すると、パフォーマンスにどのような影響がありNVARCHARますか?私の希望は、SQL ServerがそれmyFieldが既に型であると動的に認識できるほどNVARCHAR効果的になることです(事実上をCAST何もしない状態に変えます)。

4
カウントがゼロのグループを取得するにはどうすればよいですか?
SQLサーバーデータベースのデータからグラフを作成しようとします。カウントがゼロであっても、このストリートに住んでいるユーザーのカウントを含むすべてのストリートを取得します。 このために私はこのクエリを試しました: Create table Streets( ID int IDENTITY primary key, Name varchar(100) ); create table users( ID int IDENTITY primary key, Username varchar(100), StreetID int references Streets(id) ); insert into streets values ('1st street'), ('2nd street'), ('3rd street'), ('4th street'), ('5th street'); insert into users values ('Pol', 1), ('Doortje', 1), …

3
BULK INSERTステートメントのパフォーマンスをどのように調査しますか?
私は主にEntity Framework ORMを使用する.NET開発者です。ただし、ORMの使用に失敗したくないので、データレイヤー(データベース)内で何が起こるかを理解しようとしています。基本的に、開発中にプロファイラを起動し、クエリの観点からコードの一部が生成するものを確認します。 非常に複雑なもの(ORMが注意深く書かれていなければ、かなり単純なLINQステートメントからでもひどいクエリを生成する可能性があります)や重いもの(持続時間、CPU、ページの読み取り)を見つけた場合は、それをSSMSで受け取り、その実行計画を確認します。 私のデータベースの知識レベルでは問題なく動作します。ただし、BULK INSERTはSHOWPLANを生成しないように見えるため、特別な生物のようです。 非常に単純な例を示します。 テーブル定義 CREATE TABLE dbo.ImportingSystemFileLoadInfo ( ImportingSystemFileLoadInfoId INT NOT NULL IDENTITY(1, 1) CONSTRAINT PK_ImportingSystemFileLoadInfo PRIMARY KEY CLUSTERED, EnvironmentId INT NOT NULL CONSTRAINT FK_ImportingSystemFileLoadInfo REFERENCES dbo.Environment, ImportingSystemId INT NOT NULL CONSTRAINT FK_ImportingSystemFileLoadInfo_ImportingSystem REFERENCES dbo.ImportingSystem, FileName NVARCHAR(64) NOT NULL, FileImportTime DATETIME2 NOT NULL, CONSTRAINT UQ_ImportingSystemImportInfo_EnvXIs_TableName UNIQUE …

1
ストアドプロシージャの結果をテーブル変数に挿入する
テーブル変数に値を格納するストアドプロシージャがあります。これらの値を選択し、プロシージャが呼び出されたときにそれらを返します。 これらの戻り値を別のテーブル変数に設定しようとしていますが、わかりません。 ストアドプロシージャ ALTER PROCEDURE [dbo].[GetOrSetDomainId] @DomainName varchar(50), @DomainUrl varchar(50) AS BEGIN DECLARE @DomainId bigint; DECLARE @NumberOfRwos bigint; DECLARE @DomainHistory TABLE ( DomainId bigint, HasHistory bit, ServerOnline bit, DatabaseOnline bit, ServerPerformance bigint, DatabasePerformance bigint, SoldTickets bigint ) SELECT @NumberOfRwos = COUNT(Id) FROM DomainData WHERE DomainName = @DomainName OR DomainUrl = …

2
1つのテーブルに存在しない行を含む行を表示するSQL結合クエリ
私は従業員の時間記録についていくつかのレポートを作成しようとしています。 この質問に特化した2つの表があります。従業員はMembersテーブルに一覧表示され、毎日、彼らが実行した作業の時間エントリを入力し、Time_Entryテーブルに保存されます。 SQL Fiddleでの設定例:http ://sqlfiddle.com/#!3/ e3806/7 私は行くよ最終結果は番組表であるALLMembers列リストで、その後は他の列に照会した日のために彼らの合計時間が表示されます。 問題はTime_Entry、特定のメンバーのテーブルに行がない場合、そのメンバーの行があることです。私はいくつかの異なる結合タイプ(左、右、内部、外部、完全外部など)を試しましたが、(SQL Fiddleの最後の例に基づいて)希望どおりの結果が得られないようです。 /*** Desired End Result ***/ Member_ID | COUNTTime_Entry | TIMEENTRYDATE | SUMHOURS_ACTUAL | SUMHOURS_BILL ADavis | 0 | 11-10-2013 | 0 | 0 BTronton | 0 | 11-10-2013 | 0 | 0 CJones | 0 | 11-10-2013 | 0 | 0 …

2
dbをコピーして名前を変更して、両方のコピーを添付できるようにします
サーバーに「mysite_db」というデータベースがあり、ローカルマシンに「mysite_db」でもあるコピーを作成しました。(ローカルマシンの)dbを、このdb名が既にあるサーバーに接続したいと思います。つまり、ローカルデータベースの名前を変更する必要があります(物理ファイルも変更する必要があると思います)。私はそれをする方法で迷っています。案内してもらえますか? 私の目標は、サーバーに2つのデータベースをロードすることです。例: 'mysite_db'と 'myNewSite_db'


2
T-SQL(SSMSではない)を使用してデータベースにログインをマップする方法
すべてのアクセス許可とすべてをコードに割り当てる必要があるプログラムを書いています。私はこの部分で立ち往生しています: msdbデータベースの[マップ]の下にある小さなボックスをクリックし、そのユーザーをSqlAgentUserロールに割り当てるのと同じことをしたいだけです。SQL Serverエージェントジョブを追加/編集できるユーザーが必要です。SSMSを使用して設定を正しく取得できますが、生のSQLでそれを実行する方法を理解することができません。 ALTER LOGINを調べましたが、必要なことを実行するものは何も見つかりません。私はGoogleに対する正しい用語を知らないだけだと思います。私は通常、このようなことはしません。 どんな助けでも大歓迎です!

3
maxrecursionのシステム全体のデフォルトを変更する
システム全体のデフォルト値の変更方法を教えてくださいMAXRECURSION。 デフォルトでは100ですが、1000などに増やす必要があります。 クエリを取得して実行するプログラムを使用しているため、クエリヒントを使用できません。残念ながら、この制限を回避することはできません。 ただし、サーバーインスタンスの管理者権限は持っています。サーバーファセットをざっと見てきましたが、クエリオプションや再帰に関連するものは何もありません。私はそこに想定している私は、システム全体のデフォルトを更新することができる場所のどこかにあることを。 何か案は?


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