SQL Server
- ExcelからSQLServerへのデータ移行
をしたいのですが、画像のように型変換でエラーがおきます。 変換先(DB)の型はintなのに、変換元(Excel)の型はダブルになっています。 どうすればよいかご存知のかた、ご教授よろしくお願いします。
- ベストアンサー
- SQL Server
- noname#171869
- 回答数1
- SQLServerの同時接続
質問させていただきます。 SQLSerever2000でSELECTの結果を返すだけのストアドプロシージャがあるのですが、複数のユーザーが同時に実行すると、単独で実行した場合に比べて処理速度が低下するという現象が起こっています。 このSELECT(のみ)同士で処理が遅くなることについて原因がわからずに困っています。 今わかっていることは (1)SQL文が非常に複雑(サブクエリの結合も多い)で対象データの件数も多い。 (2)実行時はUPDATEなどの更新処理は一切入っていない(トランザクションも張っていない)。 (3)SELECT時にWITH(NOLOCK)を使用しても結果は変わらない。 (4)分離レベルをUNCOMMITEDにしてみたが結果は変わらない。 (5)プロファイラ上で実行時デッドロックが発生していないことは確認済み (6)ほぼ同時に実行するとやたら遅く、少しタイミングをずらして実行すると、あまり影響し合わない。 (7)処理速度の遅延は同時実行ユーザーのお互いについて発生する(※片方だけが待つわけではなく、ほぼ同時に開始した処理は単独の場合と比べて長い時間をかけて同時に終了する) 以上の事から、ストアドプロシージャの実行処理そのものは並列処理となっているが、SELECT内でのサブクエリ単位の情報取得→結果を返す・・・の処理まわりは並列実行できず、サブクエリごとにお互いを邪魔しあうような状態が発生しているように見えます。 このような想定はそもそも見当違いなのでしょうか? 実際にSELECTのみのSQL同士を複数ユーザーで実行するだけでお互いの処理に影響しあうようなことはあるのでしょうか? また、SELECT時の『共有ロック』について複数ユーザーの同時実行には何の影響もない(更新ロックではないので、ロックの取得は可能)の認識ですが、認識誤りはないでしょうか? DBにはあまり詳しくないのでおかしな事を質問しているかもしれませんが、宜しくお願いいたします。
- ベストアンサー
- SQL Server
- msntom
- 回答数1
- 既存ファイルサーバーへのインストール
質問させていただきます。 そこそこの量の各種ファイルがサーバー上に保存されていて、数台のPCから日々アクセスされている ファイルサーバーにSqlServerをインストールしてデータベースを構築しても問題ないのでしょうか? それともSqlServerは専用機として構築しなければならないのでしょうか? 宜しくお願いいたします。
- 締切済み
- SQL Server
- osiete-air
- 回答数1
- 最新の日付と2番目の日付のデータ取得方法
SQL Server 2008 にて下記条件を満たしたデータの取得を行いたいです。 ・IDごとに、日付がある日以前で最新のものとその次の日付のデータ2件 ・ただし、その2件で価格が変わらなければ価格変動のあった日付のデータまでさかのぼる ・価格が同じデータの場合、古い日付のデータを取得 例: ・条件…日付が20040101以前 <検索対象データ> ID 日付 価格 ------------------------ 1 20000101 100 1 20010201 100 1 20020301 200 2 20020401 300 2 20000501 400 2 20010601 400 2 20030701 300 3 20000801 500 3 20010901 600 3 20040901 600 <取得したい結果> ID 日付 価格 ------------------------ 1 20020301 200 1 20000101 100 2 20020401 300 2 20000501 400 3 20010901 600 3 20000801 500 なるべく少ないSelect文で取得したいと考えております。 よろしくお願いします。
- 締切済み
- SQL Server
- amazake44
- 回答数2
- SQLサーバーのテーブルでサーバー名の規定値
SQL2000サーバーから、SQL2005expressへ SQL Server Management Studio Express を使って移行しています その中で、テーブルレイアウトの初期設定について 日付やPC名は、SQL2000と同じ getdate() や host_name()で 設定できたのですが、サーバー名が @@servername では 「文字列データまたはバイナリデータが切り捨てられます ステートメントは終了されました」 とメッセージが出てきて処理できません。 SQLserver2005expressで、サーバー名の規定値についてアドバイスをお願いします
- ベストアンサー
- SQL Server
- kantada2012
- 回答数1
- SQLのインサートでヌルを挿入できないというエラー
SQLサーバーで、INSERT INTO・・・selectで抽出した列の値を入れたいのですが、主キーのところで下記のエラーが出ます。 テーブル ・・・の列 '・・・' に値 NULL を挿入できません。この列では NULL 値が許可されていません。INSERT は失敗します。 ステートメントは終了されました。 selectで抽出するテーブルの該当列を確認しても値はあるはずですが・・。 原因は何が考えられますか? お願いします・・・。
- ベストアンサー
- SQL Server
- noname#171869
- 回答数1
- SQL SERFVER で外部キーのエラー????
「INSERT ステートメントは FOREIGN KEY 制約 "○○" と競合しています。競合が発生したのは、データベース "△△"、テーブル "dbo.□□", column '◎◎' です。」 SQLサーバーマネジメントスタジオでインサートのクエリを流したところ、下記のエラーが発生したのですが、解決するにはどういった観点を調査すればよろしいでしょうか? ご存知の方、お願いします。
- ベストアンサー
- SQL Server
- noname#171869
- 回答数1
- SQLSERVER:自己結合した上でUPDATE
こんにちは。ご存知の方いらしたら、お教えくださいませんか? SQLServer2000で、 次のような顧客マスタテーブル「Tab」があったとして、 Cd列をキーにして、 Sys列がS2のCustName列の値を、 S1のものに書き換えたいと考えております。 Sys Cd CustName --- -- --------- S1 aa Corp123 S2 aa Corporation123 S1 bb 456 K.K. ... これをこのようにしたい Sys Cd CustName --- -- --------- S1 aa Corp123 S2 aa Corp123 S1 bb 456 K.K. 下記のようにしてみたのですが、 「テーブル 'Tab'があいまいです」となります。 UPDATE [Tab] SET [CustName]=T2.[CustName] FROM [Tab] T1 INNER JOIN Tab T2 ON T1.[Cd]=T2.[Cd] WHERE T1.[Sys]='S2' AND T2.[Sys]='S1' どのようなSQL文にすれば、更新できるものでしょうか?
- ベストアンサー
- SQL Server
- kanegon0224
- 回答数2
- ソートと列番号
データ取得時に列番号を組み込みたい場合 ROW_NUMBER() OVER (ORDER BY ソートキー) で実現できますが、これは実際ソートも行ってくれるのでしょうか? 例えば 1) select dt1,dt2, dt3,ROW_NUMBER() OVER (ORDER BY dt1,dt2,dt3) as dt4 from table_1 2) select dt1,dt2, dt3 from table_1 ORDER BY dt1,dt2,dt3 では同じ順序でデータが取得されるのでしょうか? 簡単にデータを作ってみたところ、同じようなんですが・・・・
- ベストアンサー
- SQL Server
- yamada009
- 回答数1
- 長いSQL文を見やすくするツールなどないですか?
C#で作成するとき、string 変数にどんどんと長いクエリを書いてしまいがちです。 こういったクエリ文字をデバッグなどで、カットするととんでもなく長い1行の文字列になってしまいます。 それをSQLServer のクエリとして貼り付けると、1行なので何がなんだかわからない状態になります。 それで適当な部分でエンターキーで改行してようやくどんなクエリかわかる状態で辟易しています。 何か適当なプログラムで適当な部分で改行(折り返す?)して全体がわかるように表示する(またはテキストを変換)ようなものってないでしょうか?
- ベストアンサー
- SQL Server
- yamada009
- 回答数3
- 項目長変更後の処理について教えてください。
項目名:コード varchar (3) を "ALTER TABLE テーブル名 ALTER COLUMN コード varchar (4);"を実行し 項目名:コード varchar (4)へ変更したいと思っています。 そこで質問なんですが現在コード の内容が"001"のような3桁なのですがそれを"0001"のように4桁に変更したいのです。(頭に"0"を追加する。) (一見づつ読んで更新していく方法はわかりますがもう少しスマートに処理がしたいので) どういったSQL文を発行すれば良いのでしょうか? よろしくお願いします。
- ベストアンサー
- SQL Server
- cz75_1st
- 回答数1
- SQL SERVER 2012のダウングレード権
SQL SERVER 2012のダウングレード権に関して教えていただきたく。 6コア1CPUのサーバに対し、SQL SERVER 2012を SQL SERVER 2008 R2にダウングレードして使用する場合、 ライセンス形態はどのようになりますでしょうか? 6コア分のコアライセンスが必要? SQL SERVER 2008 R2の1CPUライセンスと同等価格の4コアライセンスが必要?
- ベストアンサー
- SQL Server
- aurumnet
- 回答数1
- ODBC接続で新しいレコードを追加できない
OS XP SP3、ACCESS2003 DBはSQLserver2005express です SQL Server Management Studio Express を使って 新しいDB、テーブル、項目は作成できました。 また同じツールを使って手入力でデータを追記することもできます 質問はこのテーブルを ACCESSからODBC接続して 追加クエリーを実行したいのですが リンクしてテーブルを開いた時点で新規レコードが追加できない状態です。 サーバーの更新をしたく、少ないデータであれば手入力でも 大量のデータでは…ACCESSのクエリーを使いたいと思っております。 ODBC接続の設定が読み取り専用になっているのか そうであれば その設定はどこにあるのか 教えてもらえないでしょうか? 宜しくお願いいたします
- ベストアンサー
- SQL Server
- kantada2012
- 回答数1
- 結合で、条件左右で型が違った時エラーにならない方法
いつも大変お世話になっております。 よく分かっていなくて申し訳ありません。 SELECT … FROM A Right Outer Join B B on B.c =A.d というようなSQL文で B.cはvarcharでA.dはintです。 B.cは大多数の場合は数値なので動くのですが、稀に文字列が入ったときにエラーになってしまいます。 ここでエラーにならずに、そこで呼ぼうとしたものがなければNullになるようなよい方法がありましたら、ご教示いただけますと幸いです。 以下の添付画像のような結果を得られると幸いです。
- ベストアンサー
- SQL Server
- Galax01
- 回答数1
- DISTINCTで選択した項目以外でのソート
お世話になります。 SQLサーバ2000から、SQLサーバ2008への移行を行っております。 以下のようなSQL文は2000では許容されていたようで、問題なく(?)稼働していただのですが2008に移行したら軒並みエラーになってしまいました。 エラーで稼働確認が進まないので、修正方法を検討しているのですが、まだSQLサーバが使えない環境で確認ができません。 2000が来てから確認する予定ではありますが、以下の通りで新旧・同様のソート順になると考えて問題ございませんでしょうか。 教えていただけると幸甚です。 【例1】 SELECT DISTINCT ISNULL(T1.C1,""),T1.C2 FROM T1 ORDER BY T1.C1 →ORDER BY 項目を ISNULL(T1.C1,"")に変更 【例2】 SELECT DISTINCT T1.C1,T1.C2 FROM T1 ORDER BY T1.C1,T1.C3 →ORDER BY 項目から T1.C3 を削除する 以上です。宜しくお願いいたします。
- 締切済み
- SQL Server
- tera2270
- 回答数1
- 分岐SQLを一発のSQLで実現したい
【データベース:SQLServer2005】 SQLのアドバイスを頂きたいです。 【テーブル】 テーブル名:Table1 フィールド名:種類、キー1、キー2 テーブル名:Table2 フィールド名:種類、キー1、キー2 テーブル名:Table3 フィールド名:種類、キー1、キー2 【データ】 Table1 種類、キー1、キー2 001 AAA BBB 001 AAA CCC 001 AAA DDD Table2 種類、キー1、キー2 002 AAA BBB 002 AAA CCC NULL AAA DDD Table3 種類、キー1、キー2 NULL AAA BBB NULL AAA CCC NULL AAA DDD これをUNIONで取得します。 種類、キー1、キー2 001 AAA BBB 001 AAA CCC 001 AAA DDD 002 AAA BBB 002 AAA CCC NULL AAA DDD NULL AAA BBB NULL AAA CCC 実現したいのは、 1)同種類、キー1、キー2のデータで、 種類にNULLが含まれていたら、NULLのデータは取得しない 2)同種類、キー1、キー2のデータで、 種類にNULLしかないデータは、取得する 001 AAA BBB 001 AAA CCC 001 AAA DDD 002 AAA BBB 002 AAA CCC NULL AAA DDD →いる NULL AAA BBB →いらない NULL AAA CCC →いらない ↓結果 001 AAA CCC 001 AAA DDD 002 AAA BBB 002 AAA CCC NULL AAA DDD 上記を実現する為、UNION後のSQLでも構わないので、 一発のSQLで取得する事は可能でしょうか? 有識者の方にご享受頂ければ幸いです。 どうぞ宜しくお願い申し上げます。
- ベストアンサー
- SQL Server
- yuji_from_kyoto
- 回答数3
- SQL Server 2000のマシンリプレース
SQL Server 2000のマシンリプレースを予定しております。 OS:Windows 2000→Windows 2003 DBMS:SQL Server 2000 →SQL Server 2000 サポート期間の問題は百も承知ですがこのような構成でのリプレースとなってしまいました。 リプレースにあたり旧サーバ・新サーバでIPアドレス・ホスト名は異なるものを割り当てます。 そこでDB移行の手順についてお聞きします。 移行にはSQL Server 2000の自習書(バックアップ)を参考に行う予定です。 http://download.microsoft.com/download/F/4/B/F4B18D97-C4ED-4E01-B7DC-5023F195B512/SQL2000DBA-06.doc 過去の質問も活用させていただきました。 http://okwave.jp/qa/q864802.html ■完全バックアップ 1.複製元となるデータベースを右クリックし、[全てのタスク] - [データベースのバックアップ]を選択する。 2.バックアップファイルの出力先とファイル名を指定し、「OK」を押下する。 3.バックアップ完了 ■単純復旧 4.複製先となるデータベースに空のデータベースを作成する。※複製元のデータベースと同じ名前 5.作成したデータベースを右クリックし、[全てのタスク] - [データベースの復元]を選択する。 6.「デバイスから」を選択し、「デバイス選択」を押下する。 7.「追加」を押下して先ほどバックアップしたファイルを指定する。 8.「ファイル名」を選択し、先ほど取ったバックアップファイルを選択し、「OK」を押下する。 9.「オプション」タブを選択し、「既存のデータベース上に強制的に復元」をチェックし、「OK」を押下する。 10.バックアップ完了 ■調整作業 以降は現行サーバを見ながら環境を合わせていきます。 11.[セキュリティ] - [ログイン]を選択し、ログインユーザを作成 「SQLServer認証を選択し、パスワードを入力してください(規定値に目的のデータベースを選択してください)。 12.パスワードの確認画面が表示されますので、パスワードを再入力してください。 13.「データベースアクセス」タブを選択し、権限を与えるデータベースにチェックをつけます。 ----------------- <質問> ●作業に漏れはないか? ●システムデータベースのバックアップ・復元は必要でしょうか? ●トランザクションログのバックアップ・復元は必要でしょうか? ●インデックス・View・ストアドプロシジャも復元できますでしょうか? ●その他漏れや注意点などありますでしょうか? ●バックアップ取得時にサービス提供は継続できますでしょうか? ※参照のみであり更新処理は発生しない SQL Serve初心者のため初歩的な質問ですが宜しくお願いします。
- ベストアンサー
- SQL Server
- fwjh017210
- 回答数1
- データの前ゼロを削除したい
いつも楽しく勉強させていただいております。 Win7でSQLServer2008R2の環境です。 CSV形式のファイルをSQLServerにインポートした後で集計を行います。 問題はキーとなる列に前ゼロが入っている行と入っていない行があることです。 つまり、100と000100と0100は同じキー(100)として集計したい。 これを実現するにはどうしたらよいでしょうか。 SQL文で対処できますか。 それともデータベースに取り込む前のCSV形式のファイルの段階でVBなどのプログラムによって書き換えてしまったほうがいいですか。 trim関数はスペースなら削除できるようですが、0には使えないですよね。 キーとなる値の桁数の最長は不明なので、0埋めは使えません。 また間にハイフン(-)を含むことがあるので、数値型に変換するというのもできません。 もう一つ質問です。 データベースを使う際、データの加工はデータベース内で行うのとデータベース取り込み前に行うのと2通りあると思います。 どんな時はデータベース内で行い、どんな時は取り込み前に行うべきでしょう。 ちょっと質問の内容が漠然としていて申し訳ありません。 たとえばデータの内容が全角半角が混在しているのを半角に統一するというのは、どちらでやってもできますよね。 基本的にはCSVファイルのイメージをそのままデータベースに取り込み、加工はデータベースの機能を使いたいのです。 集計前のデータの加工において、 「こういうことはデータベースではできないよ」という例を幾つでも教えてください。 逆に「こういうことはデータベースでないとできないよ」というのも。
- ベストアンサー
- SQL Server
- meglin888
- 回答数3
- 複数列の最大値を求めたい
SQLServerでOracleのGREATEST関数のような事がしたいです。 具体的に書きますと、 ID | 列1 | 列2 | 列3 | 列4 | 列5 ------------------------------ 01 | 700 | 200 | 300 | 400 | 100 02 | 100 | 800 | 200 | 300 | 200 03 | 100 | 300 | 900 | 100 | 100 という表があった場合に ID | 最大値 ------------------------------ 01 | 700 02 | 800 03 | 900 といった結果を求めたいです。 CASE等を利用するしか方法はないのでしょうか。
- ベストアンサー
- SQL Server
- suke77
- 回答数1
- RAID構成時のSQL Server の復旧
質問させていただきます。 例えば、RAID1が組んであるHDDにSQL Server をインストールして データベースを運用している際、片方のドライブが壊れた場合 復旧するにはSQL Server の再インストールから行うのでしょうか? それとも、SQL Server そのものもミラーリングされていて、 データベースを操作するアプリケーション側で接続先を変更すれば すぐに復旧できるのでしょうか? その場合、データベースは壊れる直前まで情報は更新されているのでしょうか? 宜しくお願い致します。
- ベストアンサー
- SQL Server
- osiete-air
- 回答数2