SQL Server

全2972件中161~180件表示
  • DB構造移行したいが、同じ構造にならない

    SQL Serverについて教えていただきたく、よろしくお願いいたします。 既存のデータベースと同じ構造のデータベースを別のサーバに構築すべく以下の作業を行ないましたが同じにはなりませんでした。足りない点などご指摘いただければありがたく存じます。 【同じでないと判断した理由】 「移行元DB」と「移行先DB」からDB作成スクリプトを生成し、スクリプトを比較したが同一ではなかった(列制約の記述) 例えば、移行元DBでは次の2行とも存在しますが、移行先DBでは2行目の([列名])を含む行が生成されません。 GRANT SELECT ON [dbo].[テーブル名] TO [public] AS [dbo] GRANT SELECT ON [dbo].[テーブル名] ([列名]) TO [public] AS [dbo] 上記のGRANT以外については同一でした。 【行なった作業】 SQL Server Management Studioにて、「移行元DB」を右クリック→タスク→スクリプト生成→全てのオブジェクトの生成→詳細設定にてインデックス・トリガ・オブジェクトレベル権限の各スクリプトをTrueにし、サーバのバージョン互換のスクリプトを"SQL Server 2000"に→スクリプト生成。 生成したDBでも上記の手順にてスクリプトを生成し、両者を比較した。 【環境】 元DB:SQL Server 2000 移行先DB:SQL Server 2008R2 上記作業を行なったサーバ:SQL Server 2008R2 当方、SQL Serverは初心者です。変な言い回しなどありましたらどうぞご容赦ください。 ご回答いただければ幸いに存じます。どうぞよろしくお願いいたします。

    • 締切済み
    • noname#233585
    • SQL Server
    • 回答数1
  • INNER JOIN > EXISTS > IN

    SQL Server 2008での話です。 製品テーブルと、その製品の売れ行きのランキングデータを格納するテーブルがあって、 売れ行きの良いものTOP10だけ取り出したいと思っています。 製品IDがキーになっています。 ランクテーブルから10位以内の製品IDをSELECTし、それをIN句に 入れるということをやっていたのですが、遅かったので、EXISTSに 書き変えました。 更に、INNER JOINにしてしまえば、WHERE句より実行されるので、 より速くなると聞き、試しているところです。 実際、速くはなったのですが、以下パターンだとそれほど差が出ません。 (データの件数のせいだとは思いますが…) どちらがベターなのでしょうか。 Bのほうが先に絞り込みをしてから結合されるから、速い…ような気が しているのですが、動き的には一緒だったりしますかね…。 もしより良い書き方がありましたらご教授ください。 ■Aパターン SELECT * FROM 製品テーブル INNER JOIN ランクテーブル ON 製品テーブル.製品ID = ランクテーブル.製品ID AND ランクテーブル.順位 <= 10 ■Bパターン SELECT * FROM 製品テーブル INNER JOIN ( SELECT ランクテーブル.製品ID FROM ランクテーブル WHERE ランクテーブル.順位 <= 10 ) TMP ON TMP.製品ID = 製品テーブル.製品ID

  • phpMyAdminでSQLのコマンドについて

    SELECT * FROM Orders WHERE data >= '25' dataの部分で値が25以上の情報を出してもらいたいのに、出てくるのが25以上もあるし、下回るのも平気で出てくるので、どうやって検索すればわからないです。 dataの部分のTYPEがVARCHARになってるのが問題のような気がするのですが、DOUBLEに変えようと思ってもできませんでした。 何か対策がないでしょうか? 回答よろしくおねがいします!

  • AccessとSQL Serverの連携について

    現在Accessで組まれているデータベースがあるのですが、複数人で入力をする必要が出てきたため、SQL Serverへ移行したいと思っています。 ただ、まだデータベースの内容が完全にFIXしておらず、項目に変更や追加が発生する可能性があります。 そこで、 ●Accessを管理画面として使い、 ●Access上で内容を変更したら、システム全体もその通り変わる ような仕組みを作りたいのですが、可能でしょうか。 (完全にSQL Serverへ移行するのではなく、AccessとSQL Serverを連携させる?) よき方法がありましたら教えて頂けましたら幸いです。 ちなみにコストはあまり大きくはかけられません・・。 どうぞよろしくお願いします。 (※私はシステムはど素人なので、なるべく簡単に教えて頂けたら嬉しいです。なお、説明がおかしなこともあるかと思いますがご容赦ください。)

  • SQL文で2つのSELCT文の結果を繋げる方法

    SQL文で2つのSELCT文の結果を繋げる方法はありますでしょうか。 Left Join でもと思ったのですが、片側にしかないのも、1レコードとして出力したいです。 テーブルの例と出力の理想は以下です。 また、上記の応用でこれを4テーブル(SELECT文)を繋げて、下記例で言うと、日付と商品コードがキーで、どのテーブルに存在しても、結果を1行で返せるでしょうか。 【テーブル1(SELECT文1)】 F_仕入 伝票日付 商品コード 仕入金額 2014/07/01 101     10,000 2014/07/02 102     15,000 2014/07/05 104 20,000 【テーブル2(SELECT文2)】 F_売上 伝票日付 商品コード 売上金額 2014/07/01 101     15,000 2014/07/02 102     25,000 2014/07/03 103 13,000 上記2つのSELECT結果 伝票日付  商品コード 仕入金額 売上金額 2014/07/01 101 10,000 15,000 2014/07/02 102 15000 25,000 2014/07/03 103 13,000 2014/07/05 104 20,000 よろしくお願いします。

  • SQLServerにて複数のデータで条件指定したい

    SQLServer 2008です。 Where 句をつかって Where str like 'A%' ということをしますよね 次に引数を使って WHERE str like @STR として @STR = 'A%' を 渡すことができるところまではわかりました。 では、 'A%','B%' や、 'A%', 'C%', 'D%'のように 複数を指定して処理結果を得るためにどうすればよいのでしょうか? 要するに WHERE str like @STR[] とかのように配列を指定するとか、もしくは別の方法があれば 教えてください。 WHERE str like @STR1 or str like @STR2 : or str like @STRn みたいにして n=100ぐらいにしておけばまず大丈夫だろう・・・ みたいなことするのでしょうか?

  • 別のSQLServerのバックアップを復元で

    2台のPCでSQL Serverのデータベースを別のコンピュータのSQL Serverで 復元しています。 別のWindows Server上のSQLServer2012から別のWindows Server上の SQLServer2012へバックアップファイル(yyyymmdd.bak)でリストアを しようとしております。 作業内容としては、データベース→DB選択→タスク→復元→データベースとし、 デバイスからバックアップファイルを指定しています。 データベースの復元は問題なく行え、DBへのアクセス、参照なども行えるのですが、 復元時に使用したユーザとは別のユーザのデータベースロールのアクセス権が消え てしまうのです。 SQLServerへの接続はでき、エクスプローラーには、データベースの表示はされる のですが、表示されたDBを選択をするとアクセスエラーとなります。 Windows認証で接続しているユーザです。 ユーザは同じですがドメインが異なる。 何故、消えてしまうのか。 消えないようにするにはどうしたらよいのか。 教えて下さい。 また、このような事象の説明があるサイトなどがありましたら教えて下さい。 つたない文面でわかりづらいとは思いますが、宜しくお願い致します。

  • 日時のデータ型について

    お世話になります。 SQL Serever 2008 Standard イントラにてブラウザを介してDBへアクセスしております。 日時を登録するときに、yyyy/mm/dd hh:mm形式で登録させたいのですが、テーブルの該当フィールドのデータ型がdatetimeだと秒まで登録されてしまいます。 上記フォーマットでの登録は無理なのでしょうか。 ※テーブルには文字列として登録するのではなく、ちゃんと日時で登録したいところです。 ご教授の程、宜しくお願い致します。

  • 1つのテーブル・2つの列を結合して1つの検索結果に

    あるテーブルAがあり、そこにINT型の列bと列cがあるとします。 |b|c| |1|2| |1|3| とデータが格納されているとき、ここから[1,2,3]という風に、重複のない結合結果を出すにはどういったSQLを書けば良いでしょうか。 2列だとDISTINCTも使えず、簡単そうなのに自分ではできませんでした。出力後に結合するのでは色々と不都合なことがあったため、この出力が一発で出せれば便利だと思い質問させていただきました。ご回答よろしくお願いいたします。

  • SQL Server 2008 R2 のメモリ

    SQL Server 2008 R2 の使用環境は Xeon E5540 2.53GHz の内1コアを割り当てています。 メモリは4GB、Windows 2008 R2 Server 64bit です。 同時接続数は高々20に満たない程度なのですが、元々ここで質問させていただいた巨大なテーブル自体、サイズが4GBを超えていますので、メモリ不足は当初から懸念しておりました。 ここでご教授いただいたSQL Server 2008 R2 の推奨スペックから考える限り、メモリ不足は深刻かと思われるのですが、実際問題としてどの程度搭載してやれば快適とまでは行かないまでも、そこそこ不自由なく動作するものでしょうか? (多ければ多いほど良いというのは100も承知なのですが、諸般の事情であまり予算が裂けません)

  • SQL サーバのCPU使用率が高い

    お世話になります。 以下の問題に直面し困っております。 よろしくご教授願います。 元々MS SQL Server 2000 にて使用していたテーブル(4千数百万行)を ほぼ同じマシンスペックの筐体にインストールした SQL Server 2008R2 に移行したところ、単純なSELECT文を実行しただけでCPU使用率が100%近くまで上昇してしてしまいます。(2000では20~30%) インデックスが移行されていないのかと思い確認しましたが、全く同じ状態でした。 何かサーバ、OSの設定等で解決できるものでしょうか?

  • sqlserverで書式チェックしたい

    sqlserver2008,2012を使用しています。 あるフィールドの値が、"999-999"の書式になっているかチェックを行いたいのですが、 SQLで簡単にチェックできますか? 文字列(nvarchar)エリアで、3桁の数値+'-'+3桁の数値 以外のデータを抽出したいと思っております。 どなたかご教授お願いします。

    • ベストアンサー
    • noname#208236
    • SQL Server
    • 回答数1
  • 末尾の全角スペースの削除

    SQL Server 2008環境です。 文字列の末尾の空白を一括して削除したくて、以下のようなクエリを書きました。 UPDATE TEST_TABLE SET NAME = REPLACE(RTRIM(REPLACE(StoreBranchName, ' ', ' ')), ' ', ' ') 全角スペースを一度半角スペースにして、RTRIMをかけた後、最後に 半角スペースを全角に直すというものです。 しかし、これだと、元々半角スペースが入っていた場合、そっちまで全角スペースに なってしまうため悩んでおります。 うまいやり方を教えていただけないでしょうか。 宜しくお願いします。

  • クエリを一定時間で停止させる

    Sql server 2008 r2 standard editionで、あるストアドプロシージャの実行してから一定時間処理が終わらなかった場合に自動的にそのストアドプロシージャの処理を終了させる方法はありますでしょうか。 もしご存知の方がいらっしゃいましたら教えていただければ幸いです、よろしくお願いいたします。

  • データベースアプリの作成

    Visual Studio Express 2013 for Webでデータベースアプリを作成しようとしており、そのメインとなる部分として、データをエクセルのように表形式で扱いたいのですが、なかなかうまくいきません。ネットにサンプルプログラムがありそうなものですが、見つかりません。部分的なサンプルを駆使して、現在LinqDataSourceとGridViewを用いて途中までは作成しています。 欲しい機能としては、 1.データ検証ありで、データの追加、更新 2.データの削除(確認ポップアップあり) 3.各データでフィルタリング表示(起動時は全データ表示。フィルタリングを外せば全データ表示できる) 4.データ読み込み後、他者が更新した1行(1レコード)を更新しようとしたら、その旨表示して更新しない。 5.エクセルファイルにエクスポートもできれば嬉しい。 何かよいサンプルプログラムはないでしょうか。

  • BULKINSERTのWITHオプションについて

    SQLserver 2005 Expressを使用してます。 csvをBULKINSERTでインポートする際にcsvの最終行に終了コードのようなデータが 入っていてインポートに失敗します。 BULKINSERTのWITHオプションのLASTROWの引数に変数を使用して 日々行数の変化するcsvの最終行-1の値をセットしたいのですが構文エラーに なります。どのように記述したらいいのでしょうか? 試した事は test.csv 1,あ,4200 2,い,5300 . ← 何かのデータ CREATE PROCEDURE [dbo].[test1] AS bulk insert test_table from 'C:\test.csv' with (firstrow = 1,formatfile = 'C:\Import_Fmt.xml') で実行するとエラー「一括読み込み: データ ファイルで予期しないファイルの終了が検出されました。」になるので、最終行の「.」が原因かと思い。 ALTER PROCEDURE [dbo].[test1] AS bulk insert test_table from 'C:\test.csv' with (firstrow = 1,lastrow = 2,formatfile = 'C:\Import_Fmt.xml') で実行するとエラー無くインポートされました。 実際のcsvは行数10000件はあり日々増減しますので毎回手作業で数えることは難しいです。 そこで一度仮テーブルを作り改行コードまでを一つのカラムにインポートして 行数をカウントし、変数にセットしてLASTROWの引数に渡そうとして ALTER PROCEDURE [dbo].[test1] AS declare @maxseq as int drop table test2 create table test2(F1 varchar(max)) bulk insert test2 from 'C:\test.csv' with (firstrow = 1,formatfile = 'C:\ImportOrg_Fmt2.xml') set @maxseq = (select count([F1]) from test2) --ここにreturn @maxseqを記述して以降を削除して実行し、ストアドを実行したら       --取り込んだcsvの行数が表示されました。 bulk insert test_table from 'C:\data\test.csv' with (firstrow = 1,lastrow = @maxseq -1 ,formatfile = 'C:\ImportOrg_Fmt.xml') と記述して実行すると メッセージ 102、レベル 15、状態 1、プロシージャ test1、行 23 '@maxdeq' 付近に不適切な構文があります。 となりました。 どのように記述したら構文エラーにならずに実行できるかご回答をよろしくお願いします。

  • SQL Server 2014 過去のヴァージョン

    お世話になります。 SQL Server 2005 から SQL Server 2014にする際に、 2005のデータ(MDF,LDF)は そのままアタッチして使用することが可能でしょうか? 2005のSQL文はそんなに特殊な事は記述していませんが、2014にする際に、 気を付けなければならない事などございましたら、 何卒ご教授いただければと存じます。 よろしくお願いいたします。

  • 集計表の外部結合

    SQL文について勉強中ですが、集計のやり方が分からないためお教えください。 SQL SERVER2008r2 Management StudioでSQLを書いてます。 ◎TM部門(店舗マスタ) 店舗CD 店舗名 ◎TM店舗部門(店舗部門マスタ) 店舗部門CD 店舗部門名 ◎TT売上伝票(売上伝票) 伝票番号 行 店舗CD 店舗部門CD 売上日 売上時間 商品CD 商品名 数量 税抜単価 税込単価 税抜金額 税込金額 消費税 伝票合計 上記テーブルがあり、日付を限定して集計したいのですが、うまくSQLが書けません。 【希望結果例】 集計期間:2014/04/20 ~ 2014/05/20 日付      | 店舗名 |店舗部門名  |  日別合計 2014/05/21 | 店舗A  | 店舗部門A   | sum(伝票合計) 2014/05/21 | 店舗A  | 店舗部門B   | sum(伝票合計) 2014/05/21 | 店舗A  | 店舗部門C   | sum(伝票合計) 2014/05/21 | 店舗B  | 店舗部門D   | sum(伝票合計) 2014/05/21 | 店舗B  | 店舗部門E   | sum(伝票合計) 2014/05/21 | 店舗B  | 店舗部門F   | sum(伝票合計)                    ~ SELECT 伝票日付, 店舗CD, 店舗部門CD, SUM(伝票合計) AS 日別合計 FROM TT売上伝票 GROUP BY 伝票日付,店舗CD,店舗部門CD HAVING 伝票日付 BETWEEN '2014-04-21' AND '2014-05-20' AND 店舗CD IN(1,2,3,4) ORDER BY 伝票日付,店舗CD,店舗部門CD 上記の結果 日付      | 店舗CD   |店舗部門CD   |  日別合計 2014/05/21 | 店舗A    | 店舗部門A   | sum(伝票合計) 2014/05/21 | 店舗A    | 店舗部門B   | sum(伝票合計) 2014/05/21 | 店舗A    | 店舗部門C   | sum(伝票合計) 2014/05/21 | 店舗B    | 店舗部門D   | sum(伝票合計) 2014/05/21 | 店舗B    | 店舗部門E   | sum(伝票合計) 2014/05/21 | 店舗B    | 店舗部門F   | sum(伝票合計) 集計は全く問題ないのですが、ここからリレーションし、店舗名、店舗部門名を表示したいのですが、書き方が分かりません。 無知ながら、下記方法を試しました結果 SELECT TT売上伝票.店舗CD, TM店舗.店舗名, TT売上伝票.店舗部門CD, TM店舗部門.店舗部門名 FROM TT売上伝票 JOIN TM店舗 ON TM店舗.店舗CD=TT売上伝票.店舗CD JOIN TM店舗部門 ON TM店舗部門.店舗部門CD=TT売上伝票.店舗部門CD UNION ALL SELECT 伝票日付, 店舗CD, 店舗部門CD, SUM(伝票合計) AS 日別合計 FROM TT売上伝票 GROUP BY 伝票日付,店舗CD,店舗部門CD HAVING 伝票日付 BETWEEN '2014-04-21' AND '2014-05-20' AND 店舗CD IN(1,2,3,4) ORDER BY 伝票日付,店舗CD,店舗部門CD エラーメッセージ ステートメントが UNION、INTERSECT、EXCEPT のいずれかの演算子を含んでいるときは、選択リスト内に ORDER BY 項目が必要です。 無知ながら、UNION演算子でやる方法と、サブクリエを使う方法があるのではと思いますが、出来れば利点と欠点を含めてお教え頂けたら幸いです。

  • ツリー情報のデータをSQLで取得したい

    SQLServer 2008 です。 以下のツリーデータの場合に A ┬C │├D ┬H ││ ├I ││ └J │└E B ┬F ┬I  │ └L  └G 次のようなデータを登録しています。 ┌──┬──┬──┐ │OYA │KO │Data│ ├──┼──┼──┤ │A │C  │"C" │ ├──┼──┼──┤ │A  │D  │"D" │ ├──┼──┼──┤ │A  │E  │"E" │ ├──┼──┼──┤ │B  │F  │"F" │ ├──┼──┼──┤ │B  │G  │"G" │ ├──┼──┼──┤ │D  │H  │"H" │ ├──┼──┼──┤ │D  │I  │"I" │ ├──┼──┼──┤ │D  │J  │"J" │ ├──┼──┼──┤ │F  │I  │"I" │ ├──┼──┼──┤ │F  │L  │"L" │ └──┴──┴──┘ 引数OYA="A"でSQLを実行した場合に 以下のような この引数を含むそれ以下のツリーに関する データを取得する方法を教えてください。 ┌──┬──┬──┐ │OYA │KO │Data│ ├──┼──┼──┤ │A │C  │"C" │ ├──┼──┼──┤ │A  │D  │"D" │ ├──┼──┼──┤ │A  │E  │"E" │ ├──┼──┼──┤ │D  │H  │"H" │ ├──┼──┼──┤ │D  │I  │"I" │ ├──┼──┼──┤ │D  │J  │"J" │ └──┴──┴──┘

  • SQL インスタンスの¥をクエリーに記述したい

    リンクサーバからデータを取得したいのですが、インスタンスの¥の処理がわかりません。 すみませんが教えてください。 execute ('INSERT INTO testPC1¥SQL2005.test FROM SELECT * FROM testPC2¥SQL2005.testJP')