Microsoft SQL Server 総合スレ 9
☆ チン マチクタビレタ〜
マチクタビレタ〜
☆ チン 〃 ∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
ヽ ___\(\・∀・) < Oracle RAC と同等の機能まだ〜?
\_/⊂ ⊂_ ) \_____________
/ ̄ ̄ ̄ ̄ ̄ ̄ /|
| ̄ ̄ ̄ ̄ ̄ ̄ ̄| |
| 愛媛みかん |/
くそわろたw
SSRSの人もういないかな
ドスケベ
だれもいない
DROPするなら
いまのうち
12 :
NAME IS NULL:2011/08/12(金) 16:32:13.45 ID:CJ9o/udu
データベースの容量を制限したいのですがどうやったらできますか?
ManagementStudioのデータベースプロパティで自動拡張というのを
さわっていますがファイルの最大サイズというのが今は無制限になっています。
これをたとえば1GBとしたら制限されますか?
されるとして容量MAXになったら古いデータから削除されますか?それとも
空きを作るまで追加不可になるのでしょうか?
環境:
Windows7
SQL Server 2008 R2
空きを作るまで追加不可
篩データから削除したいんならトリガあたりで仕込め
下のサイトに従ってMSDE2000Aをインストールしたのですが、
データーベースに接続しても初期にインストールされているmasterなどのテーブルを見ることができません。
サーバー自体は正常に動作しているようなのですが、
VSで見てもコマンドプロントでSQL文を打ってもログインは出来るのですがテーブルが存在しない状況です。
環境はVS6.0、VS2003、VS2010とインストールしただけなのですが何が問題なのでしょうか?
ConfigSamples.exeも実行したのですがPUBSなどのDBが登録されません、どなたかご協力お願いします。
http://www.atmarkit.co.jp/fdotnet/basics/adonet_index/index.html
>>14 ログインはなにでやっているのか、SQLサーバ認証か、Windows認証か
ログオンに初期データベースが関連付けられるから
違うとこにに繋がっていたら
USE master
などとやって接続先をかえてやる必要がある。
存在しないのか、見えていないだけなのか切り分けろ
SSMSEとかで接続してみたか?
16 :
14:2011/08/13(土) 17:23:03.69 ID:???
ログインはVisualStudioとサイトに載っているコマンドプロントでのWindows認証です。
SQL Server 2005 express でも同様の症状がでました、SSMSEでも同様の症状です。
2008ではインストール中にエラーがで時もありました。
別のPCでSQL Server 2005 expressをインストールしたところ正常に動作したので環境問題だと思われます。
とりあえず初期化後最小構成で動かしてみます。
返信ありがとうございました。
masterが無ければ正常に動作しないはずだし
それ単に接続できてない気がする
セキュリティ関連のソフト全部切ってためしてみたら?
18 :
NAME IS NULL:2011/08/15(月) 19:37:38.52 ID:BrXKZFY2
SQL Server CompactはここでOKでしょうか?
まったく新しいプロダクトを立ち上げるので、新しい方がいいと思って4.0にしたのですが、これってSQL Server 2008 Management Studioから覗けないのですね。
これ、せめてODBCは無いのでしょうか? Visual Studio 2010のツールだけでは流石に辛過ぎます・・・。
20 :
18:2011/08/16(火) 09:37:27.76 ID:???
>>19 見れるのは3.5までです。4.0は見れないんですよ・・・。
接続ダイアログの「サーバーの種類」を見ろ
あそこはコンボボックスだ。
押せ!
>>20 を読まずに書き込んじまったぜ
4.0 は知らん!
35 :
18:2011/08/16(火) 20:11:42.04 ID:eUDu+q20
すいません、お騒がせしました
http://msdn.microsoft.com/ja-jp/library/ms171951(v=sql.110).aspx
Windows デスクトップ (Visual Basic または Visual C#) プロジェクト システムの次のデザイナーは、SQL Server Compact 4.0 では使用できません。
・データセットを構成するために使用されるデータ ソース構成ウィザード。
・Sync Framework を使用して、データとスキーマを SQL Server と同期するために使用されるデータ構成の構成ウィザード。
・SQL Server Compact データベースからエンティティを生成するために使用される Entity Data Model ウィザード。
ということで、Web以外ではSQL Server Compact 4.0はまだ使い物にならないようです。
わざわざこの為にSP1を入れたのになぁ・・・。
SQL SERVER 2008R2で質問です。
現在ストアドを作成しており
あと1テーブルから複数の結果を変数に取り込みたいと考えています。
MySQLとかであれば
SELECT〜INTO〜FROM
で複数の結果を1回のSELECTで変数にセットできたように思いますが
このようなことはSQL SERVERではどのようにすればよいのでしょうか?
DECLARE @a int,@b int
SET @a = SELECT A FROM TABLE
SET @b = SELECT B FROM TABLE
こんな感じに書くのはスマートではないのかな?と思いました。
記憶違い等ありましたらご指摘いただけると助かります。
どうかよろしくお願いします。
SELECT @a=A,@b=B FROM TABLE
>>39 ご指摘の方法で確認できました!
ありがとうございました。
文頭 ご提示 ですね
スレ汚し失礼しました。
SQL SERVER 2008について質問です。
SQLサーバーの暗号化機能にSSL接続というのがあるのですが、
SSLが有効になっているかどうかの確認ってどうすればいいですか?
構成は
DBサーバー
クライアントの構成で、接続はODBCを使っています。
このときDBサーバー側で証明書を発行し、クライアント側では
証明書がインストールされていない常態にもかかわらず、
DBサーバー、クライアント間で接続ができてしまっています。
DBサーバー側では構成マネージャより強制的に暗号化フラグを
オンに、証明書はIISマネージャより発行された自己証明を使っています。
sys.dm_exec_connections の encrypt_option で解るんじゃないかな
44 :
NAME IS NULL:2011/08/27(土) 01:01:47.52 ID:UV7uXGYj
SQL SERVER 2008 R2 CAL について教えて下さい。
サーバ入替え(Windows Server)により、SQL SERVER 2008 R2への切り替えが必要
です。
現サーバ下で、SQL SERVER 2000 CAL を必要個数分保持していますが、
サーバ入替え後、SQL SERVER 2008 R2を入れた場合、
SQL SERVER 2000 CALは無効となり、SQL SERVER 2008 R2 CALを新たに購入要ですよね。
基本的な質問で大変申し訳ありません。ご教授ください。
SAを買い続けてないかぎりそうなります
すみませんが質問お願いいたします。
現在、数万点ある画像ファイルを、パスで追って検索していますが、
SQLサーバーを使って検索性をあげたいと考えています。
そこで質問ですが。。
・varbinary(max)型でDocuworksって入れれますか?
・ファイルを直に置くのに比較してvarbinary(max)だとサイズダウンできますか?
です。宜しくお願い致します。
バイナリファイルなんだから圧縮しないとサイズは基本かわないんじゃ・・・
多少クラスタサイズとかの関係で変わってくるとは思うけど所詮そのていどじゃないかな?
>>47 そうですか。ありがとうございました。
SQLServerを使って何かメリットが出せる事はないかなぁ。。
自分は画像とかファイルをSQLServerに入れたい派だな
環境移行では、SQLのDBコピーすれば済むし
ファイルサーバーへのアクセス権を別管理しなくていいし。
ファイル合計が数TBになるような場合は知らん。
>>49 なるほど。そういうメリットもあるのですね。ありがとうございました。
スレチですがDocuworksをサムネイル表示するのって難しいですよね?
スレチすぎるw
質問お願いします。もうわからねぇ。
サーバ:SQL SERVER 2008R2
バッチ実行環境:winXP、クエリアナライザはSQL SERVER2000のをインスト
バッチを使って、VIEWをCreateしているんだが、構文エラーになる。
でも、コピってクエリアナライザで実行しても、正常終了する。
>バッチファイル
isql -Sインスタンス -Uユーザー -Pパス -i%CD%\viecreate.sql
>create文
USE DB名;
GO
CREATE VIEW dbo.VIEW名
AS
SELECT XXXXX FROM TABLE WHERE GGGG = 0 ORDER BY DDD
GO
>エラーMSG
1> 2> 3> 4> 5> 6> 7> 8> 9> 10> 11> 12> 13> 14> Msg 102, Level 15, State 1, Server インスタンス名, Line 1
'�' 付近に不適切な構文があります。
※ちなみに、'�' は文字化けしているっぽい。
よろしくお願いします。
viecreate.sql
の文字コードを変えてみたらどうじゃろう?
ascii なら unicode に
unicode なら ascii に
どっかに全角スペースが隠れてないか
55 :
NAME IS NULL:2011/09/07(水) 14:25:26.13 ID:sJB0W6LI
SQL Server 2008 R2を使ってます。
ある市販のSCADAソフトの機能でSQL Serverのデータベースに
データを書き込んでますが無制限にかいてしまいます。
データベース側で1年経過したデータはデータベースから削除したいんですが
これをSQL Server Management Studioで出来ないでしょうか?
色々調べて管理のメンテナンスプランの作成で出来るのではないかと思い
見ていましたがデータベースの圧縮やバックアップはあるのですが
データベース内の古いデータの削除などはみつかりませんでした
そもそもやり方が違うのかもわかりません。
宜しくお願いします。
56 :
52:2011/09/07(水) 15:20:49.64 ID:???
>>53 SHIFT-JISに変えてみたら、USE DB名の前に変なのが入ってた。
開発端末クラッシュしたためorz、まだテストしてないけど、いけると思う。
ありがとう!
>>54 確認したら、全角スペースはなかった。
ありがとうなー
57 :
55:2011/09/07(水) 15:44:59.69 ID:sJB0W6LI
自己解決
UTF-8の文字列どうしてる?
UTF-8にしかない漢字結構あると思うんだけど
61 :
NAME IS NULL:2011/09/13(火) 20:33:22.37 ID:k1WnuJyu
SQLServer2005同士をリンクサーバーでつなげているんですが、
同一サーバーでやったときと比較して、動作が大変重くて困っています。
SQL文の見直しはやっていますが、他に有効な対応方法はないでしょうか?
使用頻度の高いテーブルをレプリケーションする
>>61 リンク元のDBでジョインしたビューやストアド作って、それ経由でデータへアクセス汁。
SQL Server 2008 Expressに接続して、
begin trans hoge
ってやると
「MARS バッチで開始されたトランザクションが、バッチの終了時に依然としてアクティブです。トランザクションはロールバックされます。」
と怒られるんですが意味すらわかりません。
誰か解決方法を教えて下さい。
65 :
64:2011/09/16(金) 23:53:25.07 ID:???
解決しました。
おまえら役立たずでつね。
sqlserverce4.0 つかって COLLATE Japanese_BIN したい場合、同様の結果を得るにはどうしたらいいですか
コンパクトエディション?
SQL Serverいいね!
SQL Server 2008 workgroupを購入したいんだけど、Win 7にインストールしても問題ない?
Win Serverにインストールとかしないといけないとかありますか?
システム要件確認しろ
おせーて♪
入らないよ
嘘つけ、ボケがっ!!
74
多謝
77 :
NAME IS NULL:2011/10/01(土) 01:47:05.95 ID:npB/CmXv
ログによく「リソースプール Internal システム メモリーが不足です。」
みたいなメッセージが頻繁に出力されるのですが、
出力されないようにする方法はありますか?
32bitOSを使用していて、SQLServer全体が使用できる領域は
約2GBだと思うので、バッファーキャッシュの上限「max server memory」を
2GB以下(1.2〜1.3GB?)にして、残りをバッファーキャッシュ以外で
使用できるようにしてあげればエラーは減ると思っていますが、
その他によい方法はありますか。
素人ですいませんが、宜しくお願いします。
何も考えずメモリ4GB積んどけ
話はそれからだ
32ビットなら AWE を有効にする
sys.dm_exec_requests を見て granted_query_memory に大きなものがあるようなら
dm_db_missing_index_* を見てインデックスを設置することを検討する
80 :
77です。:2011/10/01(土) 15:32:32.75 ID:HkAFZW6R
78さん、79さん
ありがとうございます!
SQLServer2005での質問です。
大量のデータを持つテーブル同士を結合しているビューがあるんだけど、
そのビューに条件を追加したSQL文を実行すると、
ハッシュ結合だったのがループ結合に変わって、しかもテーブルスプールが発生して、データの取得までの時間がものすごく長くなります。
結合ヒントをハッシュに指定すれば回避できるんだけど、勝手にループ結合に変わったり、テーブルスプールが発生するのはなぞのままです。
何か理由があるのでしょうか?
分かる人がいたら、よろしくお願いします。
そりゃビューだからな。
SQLServer の 自動最適化 が悪い方向に働いた
開発をしている時に、サーバとは別にローカルにSQL Serverを立てるということはよくあると思います
サーバでテーブルが更新されたときに、ローカルのSQL Serverに通知する方法はないでしょうか?
サーバのテーブル定義が変更されると、プログラムが落ちてしまうのでそれを防止したいからです
落ちる時点でどうかと思うけど、レプリケーションとか。
86 :
84:2011/10/16(日) 21:04:47.10 ID:???
>>85 レプリケーションに関して知識が足りないので、教えていただきたいのですが
1.マスタはテーブル定義 & 中身をコピーする
2.その他のテーブルはテーブル定義だけをコピーする
といったことはできるのでしょうか?
できないと思う。
88 :
84:2011/10/16(日) 21:32:21.21 ID:???
通知するだけなら、リンクサーバー貼って定期的にユーザーテーブル定義比較情報比較のSQL流して、結果をmailで飛ばすとかでできると思う。
どこまでやるかにもよるけど若干の作り込みは必要。
誤:定義比較情報比較
正:定義情報比較
91 :
NAME IS NULL:2011/10/18(火) 09:55:38.45 ID:cycoLoIy
パーティションについて教えてください。
日付項目を月ごとに範囲分割して、違う年でも同じパーティションに格納したいのですが、どのようなパーティション関数を作成すればいいのでしょうか?
よろしくお願いします。
データベーススペシャリストの勉強をしているんだけど、参考書に
>CREATE TABLE文を使ってテーブルを定義する場合、次のような整合性制約
>(以下、制約とする)を同時に定義することができる。
>テーブルを定義する段階で、これらの制約をDBMS上で設定しておくと、
>ここのアプリケーションで、入力チェックなどを記述する必要がなくなるため
>生産性が向上する。
って書いてあるんだけど、制約を使うと入力チェックをしなくてもよくなるのか
SQL Serverを使っていつも開発しているんだけど、そんな便利機能本当にあるの?
そいつの言う生産性の高いアプリケーションはユーザーに冷たくエクセプション返すんだろうな。
データベース屋でアプリ視点で物考えられる奴はほとんどいないし、そんなこと試験でも出ないよ。
その参考書とやらの著者とタイトルと出版社を
情報処理教科書 データベーススペシャリスト 2012年版 情報処理教科書 データベーススペシャリスト 2012年版
三好 康之
181ページ
>>93 だよねー、普通に考えて入力チェックをDBの制約で代用するって変だよね
考えたことあるけど、メンテもしづらいし、
ビジネスロジックでやっちゃうな。
97 :
NAME IS NULL:2011/10/19(水) 12:28:28.44 ID:vMxqBUc2
webからODBC経由で実行したSQLを
Management Studioで拾う事は出来ますか?
そのクエリーをManagement Studio上で再度実行する必要があるのですが
簡単に出来そうな気がするのですがよくわかりません。
98 :
NAME IS NULL:2011/10/19(水) 12:45:47.97 ID:jBkLn4jz
ちょっと前に、SQLServer+vb6でオートメーションエラーを書いたものです。
MDACがくさいと踏んでいましたが、
Power Tools InputMan5.0Jが原因でした。
数字の場合でコントロール配列を使って、SQLServer2003でのみ発生、Xpは発生しない。
結構昔から使っていて、枯れているTOOLとおもっていたのが敗因です。
お騒がせしました。
自己解決
Profilerで拾えました
> SQLServer2003
え?
101 :
NAME IS NULL:2011/10/20(木) 09:07:12.16 ID:BK3xMatR
98です。
すまん、Windows2003でした。
レプリケーション&フェールオーバを勉強したいんだけど、
皆さんはSQL Server Developer Edition使ってますか?
やっぱり、個人でDeveloper Editionを買うって変態かなー
MSDN持ってる。
みんなはもうDENALI試した?
最近SQLServerを使い始めて、ここのサイトみたいに
「1 コアの CPU の環境で 16 個のスケジューラーを起動」
とかやってみたいんですが、どなたかやり方をご存知の方ご教授ください
http://mf1.jp/O9IC6L 色々試してみたいのにさっぱり分からない・・・
【教えて下さい。】
これからインストールするのですが、
一番お勧めの説明本があったら教えて下さい。
お願いしますm(__)m
スカラ変数(@変数名)を用いて.NETプログラム上から値を設定しているSQL文があるのですが、
テストのためにManagement Studio で実行するたびに@変数の部分を値に書き換えてやるのが面倒です。
どこかで設定できないでしょうか?
declearしてやれ
インデックスを付加するとどれくらい、速度が上がるかを実験してみたいです
何かよいデータないでしょうか?
データって?
112 :
110:2011/10/30(日) 21:38:18.95 ID:???
>>111 個人でインデックスの効果が体験できるくらいのデータを作るのは難しいので
インデックスの効果が体感できるようなデータがほしいです
>>112 ループで廻せば、1億レコードぐらいすぐ登録できるだろ。
114 :
110:2011/10/30(日) 22:41:51.58 ID:???
109 113 の辺り、酷え応対の仕方だな 罰があたるぞ
>>115 そう思うならお前が親切丁寧に教えてやれ
俺にはまっとうな回答に思えるが
117 :
NAME IS NULL:2011/11/02(水) 16:41:38.96 ID:4gNY4Qxj
>>116 の辺り、酷え応対の仕方だな 罰があたるぞ
罰とか非科学的ですね。
技術者として恥ずかしいわ
我欲のために passj を潰した人たちに爪の垢でも飲ませたい
Passjの復活頼みます
121 :
NAME IS NULL:2011/11/09(水) 12:01:25.67 ID:IWWdIkGd
Webアプリケーション開発で、ログイン周りで悩んでいます。
ColdFusionというWebフレームワークから、SQL ServerのDBサーバにデータを読み書きという構成です。
WHERE
userid = '#uid#'
AND pwd = '#encrypt_pwd#'
AND del_flg = 0
##で区切られたところは動的に入ってくる変数です。
encrypt_pwdは、ある関数を通して暗号化されたパスワード文字列です。
DB格納形式もこの暗号化パスワードで、SELECT文で比較することで使います。
この暗号化後のパスワードに=などが入ってしまうせいで正しく動作しなくなっています。
文字1個1個をエスケープするならともかく、
動的に入ってくる文字列全体を、個別にエスケープする方法はありませんか?
prepereしないとセキュリティホールになるよ
>>121 その関数が戻す文字列ってちゃんと把握できてるのか?
イコールで誤動作するとか、クオーテーション入ってたらどうする気なんだ?
そのレベルでWEBアプリとかDBアプリとか手を出すなって
解決方法は素直にプリペアするか、
文字列全部検査して必要なら問題のある文字をエスケープする
ColdFusionって個人が使うようなもんじゃなかった気がするが、業務でこのレベルか?
絶対に仕事頼みたくない所だな
124 :
121:2011/11/09(水) 17:42:20.94 ID:IWWdIkGd
業務です・・・
末端のITドカです。
Strutsという話で言ったらいつのまにかColdFusionをやらされていた・・・という具合で。
>>123 それは把握してます。
イコールとか、(とか、#とか、SQLのルールに引っかかったり、ColdFusionのテンプレートのルールに引っかかったりで、
エスケープで苦戦してます。
Prepareっての調べてみます。ありがとうございました。
125 :
121:2011/11/09(水) 17:52:44.71 ID:IWWdIkGd
そもそも他社が作りかけて投げ出したとかいうソースの改修という怪しい業務で、
まだこの現場入って4日・・・
エスケープ云々の問題も、もらった出来損ないソースの問題点ゆえに。
たしかにこのシステム、BtoCのWebシステムですが、サービスインしても自分じゃ使いたくないってのはありますw
そもそもちゃんとクオーテーションに囲まれた文字列中に=があっても、誤動作なんてするはずないんだが?
プレペアというか、パラメータクエリーね。
その辺はホストアプリの言語による
ColdFusionがどんな言語かはしらん
ColdFusion は メジャーなんですか?
本質的に、"プリペア"には事前コンパイル、くらいの意味しかない。
SQLインジェクションを防ぐためには、条件値をパラメータ化して、
エスケープをライブラリにゆだねるのが無難、って話。
コールドフュージョンってセキュリティホール発生装置なAdobeの製品だから、パラメータクエリ用のライブラリが無いとかいうオチなんじゃね?
132 :
NAME IS NULL:2011/11/18(金) 17:29:32.72 ID:UwQaAbal
denali RC0 出たね。だれか人柱キボン。というほど危なくないか
新機能のほとんどは enterprise だからなぁ
ライセンスフィーもCPU単位からコア単位になっちゃうし
SQL2008 sp3 のKBも見当たらないしもうだめかね
ここは
134 :
NAME IS NULL:2011/11/21(月) 22:12:44.04 ID:0605Gewh
2012 RCでたね
135 :
NAME IS NULL:2011/11/22(火) 00:11:33.27 ID:tOo0KjgX
ここで質問OK?
Select * From T_2002年売上
UNION ALL
Select * From T_2003年売上
UNION ALL
Select * From T_2004年売上
初心者すぎる質問。
↑みたいに入れてテーブル同士つなげたいんだけど、From以降ってテーブル名じゃだめなんですかい?
教えてください・・
136 :
NAME IS NULL:2011/11/23(水) 08:51:59.34 ID:CBHWsFzR
2012プロセッササイセンスがソケット単位からコア単位課金になって、6コア以上のプロセッサを使う場合、実質値上げになるらしいな。
しかもワークグループやWEBなどのstandardより安価なエディションが全て廃止とか…
ちなみに4コア未満のプロセッサでは4コアに価格が切り上げられるというボッタ価格の為、廃止されるワークグループの代わりにはならない。
もうSQL Serverは用済みだな
oracle 使いが安いから SQL Server 無理やり使わされる
ってことがなくなっていいんじゃない?
下のほうのエディションはEXPRESSで良いってことだろ
Expressはメモリ1GB制限がネックだね。
143 :
NAME IS NULL:2011/11/24(木) 08:32:27.22 ID:KM7yt5eD
4GBは少し前までのDBサイズ制限でしょ?
ちなみに2008R2からは10GB。
145 :
144:2011/11/24(木) 08:50:06.73 ID:???
146 :
NAME IS NULL:2011/11/24(木) 10:24:57.46 ID:KM7yt5eD
>>144 メモリとDBサイズ間違えた。
DBサイズも増えているのか。
Expressでも結構使える。
メインメモリは2Gは欲しいな
SQL鯖ならメモリ16GBがデフォだな
メモリ安いしケチる必然性がない
16GBのせる程度の規模なら32G〜128Gのせたら快適になるぜ
ディスクは敢えて RAID-0
冗長性はデータベースミラーリングで確保
ライセンスは1つで大丈V
151 :
135:2011/11/24(木) 18:11:43.90 ID:???
すみません、いまだに解決せず誰か教えてくださいまし。
FROM以降を、自分でつけたテーブル名を入れたら、見つかりませんってエラーが出ました。
考えられる間違いってどこですかね?
ちなみにFrom(スペース)(自分で名前変更したテーブル名)で入れてみてダメでした。
まず union しないで select できてるのか?
自分で付けたとか名前変更したとかどうやってやったんだ?
テーブル作ったときのユーザとselectしてるユーザは同じユーザか?
2012 になったらミラーリングは Enterprise 必須なんじゃね?
>>151 Systemデータベースに入ってるんじゃねぇの
技術情報の交換がなされている。。本来のにちゃんねるらしいね
passj が生きてたころはもっと活気があった
データベスミラーリングを使って、SSD→HDDとするとリードパフォーマンスと安全性を両立出来て良さげな気がするんですがどうでしょうか?
意味なし芳一だな
160 :
NAME IS NULL:2011/11/30(水) 00:41:26.03 ID:iH8GNjbb
>>158 HDD側が書き終わるまで待つから意味ないのでは
体感速度なんて読み込み中心で考えればいい
例えばインデックス減らして書き込み速度を上げるなんてアプローチは無意味だろ?
>>158 たぶん最初は劇的な効果があがるけど、SSDの書き換え寿命が近づいてきたら
リトライ頻発で SSD への書き込みに時間がかかるようになるけど
その時点では、フェールオーバーされない。
目に見えて遅くなってきたら、SSDの寿命が近くて書き込みリトライ頻発してると判断して
フェールオーバーして手動でSSD交換する、という運用じゃないと
連投スマン
ただ、現実的なアプローチとしては、メモリーが積めたら積めるだけ
(データベースサイズを超えることが望ましい)
そんで普通に HDD でいいと思う。
メモリいくら増やしても、OSのパッチ適用とか、ハードの保守で再起動するわけだからそのタイミングでキャッシュなくなるんじゃない?
それならキャッシュを当てにしなくてもパフォーマンスが出る構成ってありじゃない?
定期的にSSDとっかえること前提で。
初歩的な質問ですみません。
Windows Server+SQL Serverが動いている環境で
クライアントを追加する事になり、追加する台数分の
サーバとSQLのCALを購入したのですが、これらの
SQLライセンスを既存のサーバに追加(登録?)する場合は
どうすれば良いのでしょうか。
ライセンス証書を買います。
以上です。
ああ既に証書は買ってあるのか
それならば、あとは何もしなくていいよ
証書を買って…何もしなくていいんですか?
その”証書”のコードか何かをサーバに登録するよう”な事を
行うのかと思っていたのですが…
後出しになって申し訳ないのですがオフライン環境です。
例えばOSのアクティベーションでインターネット認証と電話認証が
あるように、前者を想定しての回答でしたら申し訳ありません
169 :
NAME IS NULL:2011/12/01(木) 23:50:04.61 ID:IPsSFMRf
MSは紳士協定が好きだよな
マジれすしてやるよ
実はマイクロソフトからオンラインで証書をオーダーした瞬間に
過去に WindowsUpdate によって吸い上げられたマシン情報と突合処理され
個人が特定されたうえで自動的にアクティベーション処理される仕組みだ
>>170でアクティベーションのカールチューンが呼び覚まされました。
つまり本来はそんなもん買わなくても繋げられるが、監査入った時に
覚悟しろよこの野郎、ということですね!
よって、ライセンスを買う前でも、ライセンス違反ではあるが接続は可能。
そのためライセンスを買っても何もする必要はなく、それを大事に保管しておいて
ライセンス調査があった時に提示すれば良い!ということですね。
買ったらあとは作業する必要がないとわかり安心しました。ありがとうございました。
何を言ってるのか分らない
誤爆
昔はOSにライセンスマネージャってのがあった気がしたんだが
最近のWindowsじゃなくなったのか?
176 :
NAME IS NULL:2011/12/02(金) 21:37:15.63 ID:kohrfEHA
ライセンス違反よりライセンス管理のが金かかるんだよ
国家レベルのID数もってるわけだからね
>>175 今でもそうなのだと思っているのですがここで話を聞く限りでは
証書さえあればオフライン環境でも問題ないそうですね。
>>176 その理屈で言うと世界中の
OSのID数>>>>>>>CAL数>SQL CAL数
で、OSはちゃんと管理している(アクティベーションが必要)なのですから、
何とかなりそうな気もします。
あの金に汚いMSが紳士協定で甘んじるというのはどうもしっくりきません…
証書さえあればいいというのは本当なんでしょうか…
「金に汚い」とか思うなら、そこのソフトを使うなよ。
サポート契約しないと、修正パッチすら入手不可能w
いまだにMSにそういうイメージ持っている人多いよね
あぽーとかラリーのやってることに比べたらまだかわいい方
パッチ入手以前にパッチがあることすら公開禁止
つか不具合であることさえ公開禁止
サービスパックタダで配るMSのなんと寛大な事か
>>182 そうそう!システム障害の原因がOracleDBであってもそれを公表することすら契約違反。
日経コンピュータのシステムトラブル記事でも、原因が未公表の場合、Oracle障害の可能性を指摘してるケースがあったりする。
>>178 漏れは長年ORACLEのソフトは使わないことにしていたんだが
SUNが買収されて困ったことになった
おがわみつぐって何してるんだろ今ごろ
186 :
当日商品を出しました:2011/12/05(月) 12:30:54.43 ID:NhGSykwm
188 :
NAME IS NULL:2011/12/11(日) 12:21:26.13 ID:55w2N/S/
検索エンジンGoogleで「インターネットテレビ 朝鮮総連 少頭劣一族 マイクロソフト社(又は経済産業省等気になる省やインターネットや原発、地震 波動砲)」を検索。
警察と自衛隊の武器は少頭劣一族が奪い、朝鮮に送ったらしい。知能障害以前の頭が悪い家族達。「工作員」の意味を知らない「工作員」家族。
189 :
NAME IS NULL:2011/12/11(日) 23:55:44.53 ID:rW0pRuCk
今業務で2000⇒2008R2の移行をやっていますが
2000バージョンで運用していたバッチから「DBCC SHRINKDATABASE」をコールすると
実行したところエラーが返されます。
他のストアドプロシージャは特段差異がないのですが・・・。
エラーメッセージ書かないって何様
ユニオンクエリーを実行したとき、2000と2008R2で結果が違ったことがあるかな
まぁ、含めてつくり直すべきだな
俺のように汎用機からしている人間の発想では、設計ありきだったが軟弱なパソコンサーバーになってからは結果ありきで設計も改めないといけない
unionで結果が違うってどういう状況だ?
kwsk
>>191 ソート順とかか?そうじゃなければバグだろう。
196 :
NAME IS NULL:2011/12/14(水) 16:13:41.81 ID:pu476EDH
時々SQL Serverと自作したアプリが切断されてしまいます。
切断された時にイベントを見ると以下があるのですが、どのような原因か分かりますでしょうか?
----
xpstar.dll' バージョン '2000.80.2039' を使用して、拡張ストアド プロシージャ 'sp_MSgetversion' を実行します。
----
sp_MSgetversionの実行というのがどういう事をしているのか分からないのですが、実行が必要なら
これを業務時間外にするなどして対応してみたいのですが、方法が全く分からず。
環境:
WindowsServer2003 * SQL Server 2000 * Access 2003(リンクテーブル)/VB
197 :
189:2011/12/15(木) 00:00:27.43 ID:???
恐れ入ります。189の追伸です。
バッチを起動したとき以下のメッセージが出力されます。
Sqlcmd: エラー: Microsoft SQL Server Native Client 10.0: エラーを特定できません
また、Management Studioのクエリエディタから「DBCC SHRINKDATABASE」を実行すると以下のメッセージが出力されます。
現在のコマンドで重大なエラーが発生しました。結果は破棄しなければなりません。
>>197 DBCC CHECKDB 動かしてみたら?
1万行くらいのデータ(DataTable型に入ってる)を一括して SQL Server のテーブルに INSERT したいです。
For 〜 Next で回しながら INSERT していくと、1万行の挿入に数分かかっちゃってます。
DataTable 型の中身をファイルに落として、Bulk Insert 〜 したら解決しそうに思いましたが、
SQL Server にファイル受け渡し用の共有フォルダを掘りたくありません。
Bulk Insert の引数に image型 なり FileStream型なり
SQL Server との通信ソケットの中にテキストファイルを入れてサーバーに送信して、
サーバーで Bulk Insert したいのですが、そんなこと出来ませんでしょうか?
ループの中で毎回commitしてるんだろ
途中で Insert が失敗しても Rollback する必要ないほどの機能なので
Transaction で囲ってないんですが、そうすると毎回コミットになるんですか?
なる
SQL Serverの2000、2005、2008で動作するソフトの社内担当になりました。
これから勉強していかねばなりませんが、とりあえずこの3種類の違いから
解説しているようなSQL Serverの基礎本でおすすめはありませんか?
>>199 まず一時テーブルにブチ込んで、一時テーブルからselect intoで一括インサートしてみたら?
>>202 Transaction で括ったら5倍くらい速くなりました。
とはいえ、1万件に1分ほどかかってます・・・
bulk insert の from の中で image型 の引数を渡すことはできないんですねー
>>204 その一時テーブルにぶち込むのに時間がかかってたんですよ
>>206 主キーでソートしてからインサートしてみ。
一時テーブルにぶち込むなら一時テーブルは別ボリュームに配置すること。
主キーは newid() で自動割り振りです。。
>>206 insertのsqlをunionでつなげて100〜1000件単位で纏めてしまうのはどう?
newidは重いから identityかrandで代用
まず1万件のレコード長と回線速度をはっきりしてくれ
2012のAllwaysOnは、実用に耐えるのかな。
次のシステム導入でOracleにするか悩む。
社内サーバで2台冗長化、
1台は外部クラウドでバックアップ兼DR対策に
しようと思うんだが。
すべて仮想サーバ上に構築予定。
Oracle高いんだよなぁ…
あんまり新機能に期待しすぎない方が…
>>205 遅くなりましたがどうもありがとうございます。
じっくり読んでみます。
alwaysOn はミラーリングがベースとなっていると認識しているので
数ミリ秒のディレイが出ると思う。
OLTPシステムではそこが問題になりそう。
あとはフェールオーバーが .NET ありきでなくなったかどうか。
DRはクラウドがどこにあるかを把握していないとやられる。
IIJ GIO のブログで「関西にあるから安心です」(キリッ
には唖然とした。
気休めでいいならバックアップ1拠点でもいいかもしれないが
だったらストレージだけ用意してバックアップファイルを置いておけば
いい話で、インスタンスを上げておく必要はない。
どうせ回線が切れる。
ふーむ。
やはり様子見が無難か。
なんかMySQLにクリソツだなぁ
DBスペシャリストの勉強しているんでけど、ロールって何に使うんですか?
開発しているときはずーっとsaなので、何使うかわかりません
public ロールのアカウント作ってそれで繋いでなにができるか試してみろ
話はそれからだ
221 :
NAME IS NULL:2011/12/21(水) 03:57:56.27 ID:2Ke02uSJ
質問です。
現在、要件定義フェーズで、ハードは事前に購入しようとなっています。
ここで、ウザいユーザが
「今想定しているCPUで大丈夫」と聞いてきました(涙)
今回の開発で、以下の様な処理があります。処理時間を教えてもらえますか?
もちろん、さまざまな理由で変動要素があるので、かなり幅を持った値(数倍〜10倍)
でユーザには提案します。
OSはWindows Server 2008の64bit、DBMSは SQL Server 2008。
なお、各テーブルの件数は、最大で50万件程度。レコード長も普通以下のシステムです。
条件は厳しくないです。
@10万件のCSVファイルのデータをSQL Server にロード。
→ストアドでやるか、VB.NET(最新のVS)でやるかも、迷ってます。
ストアドって、ファイルは読めなかった???
Aストアドで、5000件程度を処理(テーブルを読んで、チェックしたり、更新したり。
今は要件定義なので、詳しいロジックはまだ不明)
よろしくお願いいたします!
>>221 想定してるCPU書いてないし、ロジックも不明だしわけわからんが
その辺の空いてるマシンで試せよ。自分の端末でもExpressなら入れられるだろ
SQL ServerつかうならDTS使うんじゃないの?
ストアドとかbcpはCSVに弱いぞ
まあその件数なら今時のハードならでデスクトップでも瞬時だし
どっちかっつうどディスクI/Oの問題だろ
OPENROWSET
>>221 インポートするだけのシステムでCPUの心配とか
役所案件かw
税金無駄遣いの典型だな
225 :
NAME IS NULL:2011/12/21(水) 13:31:26.72 ID:FCz33SUq
>>222 221です。
CPUは、Intel XeonR プロセッサ E3-1220L(2.2GHz,2コア)
です。
まあ、
@は5分〜20分
Aは5分以下
で、ユーザに説明します。システムテストで実機検証し、
相談するかもとの条件を付けてみます。
226 :
NAME IS NULL:2011/12/21(水) 13:34:11.36 ID:FCz33SUq
>>224 221です。
役所じゃ無いけど、大企業。ちなみに大阪市役所から徒歩3分くらい。
インポートするだけのシステムじゃないけど、近いw
郵便番号データを毎月全件インポートするバッチを走らせてるけど
bcp 使ってインポートとその後の加工(基幹DBへの登録)を含めて5分もかからんぞ
確か10万件くらいはあったはず
どんなSQL文を書くのか知らんが、5000件なんて3秒以下だろ
ちなみに鯖のスペックは、HP G6(9800円)+16GB+SAS2本をRAID-0
(冗長化はデータベースミラーで確保)
業務時間内にやっても差し支えないので
手動でジョブ走らせて、郵便番号の取り込みで実測してみた。
CSVのダウソ(自動化済み)から基幹DBへの最終登録まで含めて、全部で20秒ほどだった。
連投すまん
>5000件なんて3秒以下だろ
売上から請求明細を起こすストアドの実績値ね
(消費税の丸めを、行ごとか伝票ごとかトータルか、取引先に応じて判定して丸めつつ)
230 :
NAME IS NULL:2011/12/21(水) 18:58:15.91 ID:FCz33SUq
221です。
みんなの温かい支援、ありがとうございます。
今時10万件くらい、気にするような件数では無い…思ってましたが、
自信がありませんでした。
もちろん、vbで、レコードを1件読んで、odbc経由でsqlサーバに接続
して、insertして、comittして、また次のレコード読んで…のような
ループ処理にすると遅くなるのはワカッてます。
>>230 >vbで、レコードを1件読んで、odbc経由でsqlサーバに接続
>して、insertして、comittして、また次のレコード読んで
バッチ処理なんだろ?
vbがどうとか置いといて、
もはやこの順序が間違ってるぞ。
10万件処理したら遅いかもな。
ハードウェアの問題でなく
設計が問題だろう
というか要件定義じゃなくて設計レベルの話でしょ。
自社のエンジニア同伴させたほうが早いと思う。
sqlserverのテーブルをエクスポートしようと
transferdatabaseを利用したのですが、
エクスポートしたテーブルの主キーが設定されてない状態になっていました。
VBAを利用して主キーを引き継いだ状態で
エクスポートする方法は無いのでしょうか?
oracleだと変数の長さを指定するときに、
M_TABLENAME.COLUMN_NAME%TYPE を使えます
sql serverではできないんですか?
出来ません。
変更があってもいいように項目長を長めにとるか、一時テーブルSELECT INTOで作るぐらいしかない。
236 :
NAME IS NULL:2012/01/17(火) 12:12:39.12 ID:yr/5Pc50
Enterprise Managerのプロセス情報((サーバー名→管理→現在の利用状況→プロセス情報))にて表示される
「ホスト」の欄は、PC名が表示されるようなのですが、実際にはアクセスしているPC名では無く作成者のPC名が表示されています。
これをアクセスしているPCに変更する事は可能なんでしょうか?
アプリケーション欄を見ると Microsoft Office 2003と表示されています。実際にはAccess2003のリンクテーブルにて接続になります。
接続文字列で指定すればいい。
2008R2なのですが、time型で格納されたデータの合計時間をSUM()のように計算する関数はないのでしょうか?
結果は文字列でいいのですが…
239 :
NAME IS NULL:2012/01/21(土) 22:19:01.73 ID:CIHc6oLM
MSSQL使っててパフォーマンスに不満とかある?
Oracle使ってるけどMSSQLに乗り換えようか検討中なんだ
パフォーマンスというか、原因不明なデッドロックとかに悩まされる事は多いな。
乗り換え理由が知りたい
>>240 分析関数が比較にならないほど弱いね。
あと意味不明なバグは結構遭遇する。
イミフなバグに遭遇するのはORACLEも一緒。
バグの無いDBMSなんて無いから…
オラクルは曲がりなりにもパッチが(MSにくらべて)早くでてくるからな
そういうときのMSKKの対応の丁寧さは特筆に値する。
けどUSのDevチームに橋渡しするだけだったりする。
パッチが出来あがるまではかなり時間がかかると思ったほうがいい。
パッチが出ようが、一度バグでハマる事には変わりない。
実運用環境でトラブル起きてからでないと問題解決しないのは、どの製品も同じ。
膨大な日本語にもなってないバグ情報常にチェックし続けるのは現実不可能だし、少なくとも最初の一人にとっては、バグ情報は無意味。
>>247 >実運用環境でトラブル起きてからでないと問題解決しないのは、どの製品も同じ。
オラクルもバグ多く低て開発段階でも発覚するし、それでもMSよりは対応早い。
そもそも実運用に入る前にテストするだろ。
実運用前に全ての障害が取り除けると思ってる時期が俺にもありました。
既知のバグ抱えたまま実運用はいるのかね?
そもそも開発に支障をきたすだろが。
ブロッキングが発生したら、一定時間で自動的に強制解放する方法とかって無いんでしょうか?
MSのサポート契約は何よ?
プレミアサポートだったかな?
先週だかに WindowsUpdate してから、異様に重くなったんだけど
みんなの大丈夫?
テーブル値を返すストアドを使うと半端なく遅い。
ストアドの中の SQL 文を単発で実行すると速攻で動くので
SQL文がゴミってことはないはずなんでが
てか、WindowsUpdate まではサクサクじゃった。
tempdb が腐ったとか
テーブル型を宣言して insert, select してどうなるか
256 :
254:2012/01/27(金) 10:37:48.31 ID:???
劇遅になったストアドの、どの部分が遅いのか特定できた。
カーソル作って回してるんだけど、初発の FETCH NEXT で数十秒かかってる。
カーソルの SELECT定義は、超シンプルで
そこの部分だけコピペして単独で動かす分には1秒かからない。
クレームの嵐で最悪だ
連投ですみません。
SELECT TOP 99999 とか書いたら直りました。
カーソル定義のところ、数行しか抜けて来ないので、ずっと省略してましたが・・
99999 って書いても実際に抜けてくるのは数件なんですが・・・
TOP 999999999 でも大丈夫(速攻で戻ってくる)
つまりは TOP 〜 を省略しただけで劇重
しかも、同じようなカーソル回してやってるところ
(FROM が違うだけで構造は全く一緒)
は TOP 省略でも影響なし
意味不明
バグっぽいな
カーソルでオープンしたときの実行計画ってみれないんだろうか?
とりまクラスターインデックスと普通のインデックス作り直してみたら?
ストアドは作成時のプランからかわらないんだっけ?
>>257のtop句はあまり関係なくて
dropcreateして新しい統計情報を元にしたプランに変わったんでね?
>>257 でかいテーブルは直接カーソルフェッチせずに、
まずSQLで必要な部分だけテーブル変数にブチ込んで、
テーブル変数をカーソルフェッチしてやるのが吉。
>>261 それだと元テーブルのロックが保持できないと思うんだが
でかいテーブルを長時間ロックすることが必要なロジックって・・・
べつにでかいテーブルを長時間ロックしろとは言ってないが
すくなくともカーソル回してる間ぐらいロックしときたい、って事はあるんじゃないかと思った
具体的にどんな時といわれても思い当たらないが
265 :
261:2012/02/02(木) 23:00:43.11 ID:???
>>263 その場合は、テーブル変数にブチ込むデータを抜き出す時、同時に
ロック(UPDLOCKとか)してやればいいだけだよ。
処理したデータにフラグを立てるような処理なら、
最初にUPDATEして、OUTPUT句でテーブル変数に入れるってことも可能。
266 :
261:2012/02/02(木) 23:02:36.49 ID:KmwPy6IR
テーブル変数も primary key があるかないかで処理速度が全然違うぞ
PKっつうかクラスタードインデックスじゃね?
テーブル変数の場合例外なくPK=クラスタードインデックスだよ。
テーブル変数には非クラスタインデックスは作れないから、キーの選び方にコツがある。
本来インデックスにしたい項目だけで一意にならない場合、ダミーの連番項目を追加して複合キーにしてみたり、
やたらと変数を定義したくない場合、キーをダミーの連番のみにして、
番号アクセスできる配列のようにしてみたり。
270 :
NAME IS NULL:2012/02/08(水) 17:49:33.45 ID:dJl7HmCl
SQL Server2000です。
日付だけを保持したい場合、データの型はどっちを使うべきなんだろう。
Datetime or nvercher
大量に保持したい場合(バイト数が少なくて済むので)
Datetime
秒まで保持する必要がない場合は SmallDatetime
少ない場合は
varchar
でいいと思う
varchar は論外だろ
dateadd とか使えなくなるし
dateadd を使う必要があるかによって決めればいい
目的が保持なので
t
秒まで入る Datetime って8バイトでしょ
smalldatetime は4バイト
varchar で秒まで入れたら何バイトよ
いみふ
今日は 2012/02/08 ? 02/08/2012? 08/02/2012?
DBの型に依存せずに言語に依存したいんですね
むしろデータベースに依存せずに、OSの標準レコード管理を使って方がよくね w
sqlcmdでDBのストアドをファイル出力するコマンドってある?
279 :
NAME IS NULL:2012/02/10(金) 15:35:04.58 ID:6Q/y9q0T
2005 EXPRESSなんですけど、メモリ最大値が1Gで、cpuは一個までサポートしています。
複数インスタンスを作成した場合、各インスタンスでメモリ1Gやcpu1個を占有できるんでしょうか。
それとも、全てのインスタンスで1Gのメモリ、1個のCPUを共有するのでしょうか。
わかりやすいページがあったらおしえてください。
>>280 レスありがとうございます!
>Expressの場合、同時利用可能な物理プロセッサの最大数が1基のみ、
>また利用可能なメモリ容量(SQL Serverのプロセスが利用するメモリ・サイズ)が最大1Gbytesに制限される
>(いくら物理メモリに余裕があっても、Expressのプロセスはこれ以上は使用しない)。
「Expressのプロセスはこれ以上は使用しない」ということは、複数インスタンスを作成した場合、
全てのインスタンスでメモリ1Gを共有するということになるのでしょうか。
2008 R2というのがあったんですね。
ACCESSから接続できたら試してみたいと思います。
2005からはそのままアタッチできるのかな。
しかし、1cpuに複数コア搭載している場合は、それらを使うことができるとはいい話だなあ。
>>281 > 「Expressのプロセスはこれ以上は使用しない」ということは、複数インスタンスを作成した場合、
> 全てのインスタンスでメモリ1Gを共有するということになるのでしょうか。
そういう事っぽい。
> ACCESSから接続できたら試してみたいと思います。
> 2005からはそのままアタッチできるのかな。
つなぎ方は同じ。
2005からのアタッチもそのまま可能
>>282 >そういう事っぽい。
そうですか。残念です。複数の物理サーバーを立てます。(仮想環境で)
>つなぎ方は同じ。2005からのアタッチもそのまま可能
ありがとうございます。安心しました。
一度、2008 R2のexpressをダウンロードして使ってみます。
SQLServerのインスタンスって、名前付きインスタンスだよな
インスタンス複数つくったら、プロセスも複数できてないのか?
そして複数インスタンスでメモリ共有するような仕組み持ってるのか?
>>284 そうです。名前付きインスタンスのことです。
各々の名前付きインスタンスが、1GBのメモリ、1CPUを確保してくれれば言うことはないんですが。
サービス見ると
各インスタンス毎に出来てるから、メモリ共有はないと思うが、やってみて教えてくれ
メモリや容量の制限を気にするなら、
PostgreSQLも検討してみたら。
>>286 どんな風にして調べられるでしょうか。
各インスタンスのプロセスが占有しているメモリの合計が1Gを超えているかで判断していいですか。
>>287 そうですね。制限の気にならない環境に移行したいですね。
ただ今使っているストアドプロシジャなどを変更するのが大変ですね。
インスタンスごとにsys.dm_os_memory_nodesで判るんじゃね
291 :
弖十=帝徒=繪璃奈=啓北商業の野島(横濱):2012/02/12(日) 21:31:33.21 ID:XoCydM4h
嘩喃人が奪い、中国に送った警察と自衛隊の銃は アジア大陸の七百万人の命を奪った。嘩喃人の立て籠りの2年間に何人が犠牲になったかアジアに確認を。
嘩喃人の河馬兄弟が諦めず、止めない。
人質を捕り、立て籠りを続けながらハッキングをしつこく続けている。
皆、大正生まれの戦犯。原爆投下と枯葉剤を作った人間だ。
今も犠牲者が増えるばかりの 2-Hndred Yars' Wrの最中である事を日本人だけが知らない。
Express が出たら、2008 R2 から移行する。
294 :
NAME IS NULL:2012/02/15(水) 20:51:35.13 ID:MptXRuL+
>>294 うちもまだ2000使ってるぞ
その情報はどっから?
2000ってバグあるでしょ。
それに、システム寄りのレコード番号なんかも使えない。
2000 から 2008R2 x64 に移行したわ
自動アップグレードができないんで、
2000 の データベースを 新規インストールした 2008R2に
1個ずつアタッチしたら動く状態にはなった
>>294の言う簡単に移行 って、どのレベルで言ってるんだろう
デタッチ/アタッチやバックアップ/リストアで行けるならまあ問題ないが
2000から2012だとそれもできないってんならちょっと考えないといかん
299 :
NAME IS NULL:2012/02/16(木) 21:03:16.72 ID:lVkjlb1s
オタフク
SQLSERVER2008+VB.netです。
トリガーの中でエラーが発生するとそこまでのトランザクション全体がロールバックしてしまいますが、トリガーの元のSQL文だけが失敗するようにしたいです。どうしたらいいですか?
エラーを握りつぶす。
304 :
302:2012/02/17(金) 22:07:02.55 ID:???
ありがとうございます。
トリガーの中は、
BEGIN TRY
処理
END TRY
BEGIN CATCH
END CATCH
としてしいますが、ロールバックされてしまいます。CATCHに何か書く必要ありますか?
なんで 2000?
MSDE2000をGUIで使いたかった
だから Enterprise Manager目的で評価版が欲しかったのです
教えて頂きたいのですが、SQLserver 2005 Standardにて下記機能は制約なく利用可能でしょうか?
・レプリケーション
スナップショット
・シノニム
・リンクサーバー
SQL Server 2005 エディション別機能比較表を見ても書いてないのです・・・・
SQLServer2008とアクセスのadpなのですが、データシートのレコードソースにSELECT文にヒント句
ROWLOCKを指定して編集可能にした場合、エスカレーションロックが発生するのかどなたかご存知ありませんか?
>>308 制約なくが どのくらいのことを示すのかわからんが
基本できる
>>309 ROWLOCKを指定してもロックエスカレーションは防げなかったと記憶してるが
うーん、テーブルに対して、
LOCK_ESCALATION = DISABLE
オプションかければいいのでしょうか。
accessのrecordsourceのselect文の働きがよくわからない。
powerview
>>310 ありがとう。
エンタープライズと比べて機能制限がある=制約という意味でした。
316 :
NAME IS NULL:2012/02/24(金) 22:22:48.15 ID:4Ms3DnS1
Windows Server 2008 R2 + SQL Server 2008 R2 Express
データベースを定期的にバックアップしたいと思います。
今はローカルにしてるので動いてます。
こんな感じです。
BACKUP DATABASE AdventureWorks2008R2
TO DISK = 'E:\Backup\Data.Bak';
GO
これをネットワーク共有フォルダ(Terastation or 別のWindows Server 2008 R2)に変更しました。
TO DISK = '\\Terastation\Backup\Data.Bak';
TO DISK = '\\Server2\Backup\Data.Bak';
しかしどちらもエラー(確かアクセス権だったような。今実機ないので)でバックアップできません。
ちゃんとエクスプローラからその共有フォルダにアクセス出来て、ファイルが作成できるのは確認してます。
アクセス権は問題ないと思うのですが、理由分かる人いるでしょうか?
>>316 ネットワークドライブにしたらどうなることやら
318 :
NAME IS NULL:2012/02/24(金) 23:45:14.40 ID:feqB0lbh
>>316 SQL Server サービスのアカウントでアクセス権があるかどうかだろ
320 :
319:2012/02/27(月) 22:47:45.29 ID:???
やっぱりSQL Server (SQLEXPRESS)のプロパティでした。
そこを共有フォルダに権限与えたアカウントにしたらいけました!
321 :
NAME IS NULL:2012/02/28(火) 01:54:26.80 ID:VGSyzWma
SQL Serverでは、PRIMARY KEY制約、UNIQUE制約とも16項目までですが、
それを越える項目につけたい場合、どのようにすればよいのでしょうか?
16列でユニークにならないのか?
代理キー付けとけよ
>>322 22列でユニークになります。。。
非クラスタ化インデックスとか読んでたんですがよく分かりません。。。
全部連結した一項目つくってそこに張る
>>321 全部を横並びでくっつけたCHAR列を作って回避
primarykey を考えるのに疲れたので、最近はほとんど newid() だな
newid() は結構コスト高い
>>321ですが、結論は、制約をつけない(データ作成のストアドで一意を保証する)ということになりました。。。
いろいろ教えてくださった皆さん、ありがとうございました。
330 :
NAME IS NULL:2012/02/28(火) 23:58:00.28 ID:nVh7GjfS
>>323 非クラスタ化インデックスはユニークである必要はないです。
今の出向先で列数が多いんだけど
カーソル使って変数に取り出すとき、ほとんどのサンプルが
FETCH NEXT FROM [カーソル名] INTO [変数リスト]
WHILE @@FETCH_STATUS = 0
BEGIN
[処理内容]
FETCH NEXT FROM [カーソル名] INTO [変数リスト]
END
この書き方だけどこれだと変数が100とかある時、大変・・
下記のような書き方は邪道なんかな・・・
WHILE 1 = 1
BEGIN
FETCH NEXT FROM [カーソル名] INTO [変数リスト]
IF @@FETCH_STATUS <> 0
BREAK;
[処理内容]
END
もっとスマートな書き方がないのかな・・・
スマートじゃないのは同意するが、どうせ1回書いたらコピペするだけだろ
基本的にはパターンだと思って上の書き方でやってる
>>332 やっぱそうなのか・・・
確かにコピペで済むのでわざわざ一般的な書き方を崩してまで
書く価値は無いので結局、定石通りの書き方をしてるけど・・
SELECT処理実行で、同時にINSERT処理を自動で発生させる動きを
実装させたいんですが、DMLトリガー的な技術で実現できないのでしょうか。
無理。
監査みたいなことしたいのなら C2監査を利用するか
select 用の procedure か function を用意して
ユーザーはそれだけしか利用できないようにする。
jdbc で、選択列に sql_variant 型を含む select 文を実行すると、
例外が発生する上に接続が切断されてしまいます。
ツール的なものであるため、実行される SQL 文は任意です。
例外はともかく、接続が切断されてしまうのは回避したいです。
回避方法を教えてください
338 :
NAME IS NULL:2012/03/04(日) 16:29:26.11 ID:4LzHnfZx
SQLサーバーのプロシージャを
c#で呼んでWSDL作ってんだけど
自動でWSDL作る方法ない?
sirane
WSDLなんて手動で作ったことないが
>>343 まずお前が詳細かけよ
SQLサーバーのプロシージャを直接公開してるのか?
C#でASP.NETのWEBサービス作って公開してるのか?
コードを最適化するのがプログラミングの醍醐味ですね
最適化しすぎると保守性がわるくなる
その辺りのさじ加減がプロとしてのこだわりになってくる
「何のための」や「誰のための」が抜け落ちてる最適化は迷惑だけど
そこらへんを心得てるコードに出会うとプログラムに芸術すら感じるね
2012きたな
2012のPower Viewがめちゃくちゃ良かったんだが、
あれだけ別売りしてくれないのかな?
>>331 自前で配列作るイメージで、
カーソル使わなければ、変数だらけにはならないよ。
こんな感じ。
declare @テーブル変数 table
(
i int identity(1,1)
, 実際の列1
, 実際の列2
, …
, primary key (SEQ_NO)
)
insert into @テーブル変数
select 〜 ※カーソル用のSQL(ロックの制御が必要ならここでやる)
declare @i int
set @i = 0
while @i < (select count(*) from @テーブル変数)
begin
set @i = @i + 1
--必要に応じて呼び出す。
select 〜 from @テーブル変数 where i = @i
end
また、カーソル側に個別の値の更新が必要なら、更新用データ格納項目を
テーブル変数にダミーで作っておいて、
最期に一括で戻す感じで大抵うまくいく。
350 :
349:2012/03/10(土) 23:43:54.70 ID:???
訂正
SEQ_NO⇒i
SQL Server 2008 R2でシステム運用しています。
今現在、非クラスタインデックスが5000位あるのですが、
この全ての非クラスタインデックスのファイルグループを変更したいと考えています。
一つ一つ変更する方法は分かるのですが、
数が多すぎるのでこの方法で全て変更するのは現実的ではなく
なんとかSQLで一括変更出来ないかと調べてるのですが、見つけられません。
SQLで一括で変更出来る方法あれば教えてください2ちゃんの先生。
alter index
353 :
351:2012/03/13(火) 00:42:34.31 ID:???
>>352 alter index でどうやって…
データベース内のindexの定義文字列を全て取得する方法とかないでしょうか?
あればdorop⇒createで別のファイルグループに作るように書き換えて
index数分ループでいけるかなと思うんですが。
sys.indexes で名前と細かい設定が大体とれる
sys.index_columns で項目名とその設定が取れる
あとは頑張って構文する
更新中のテーブルに対して、BCPコマンドでデータを
エクスポートすることはできないのでしょうか。。。
更新"中"のテーブルのどんなデータが欲しいんだか
>>356 夜間バッチ実行中にバックアップも取ろうとしてるのか?
まぁ、そんな更新中のデータをバックアップしても意味ないな
プロシージャ内で「xp_cmdshell」を使用するのですが、
「xp_cmdshell」を使用できるようにする再定義処理も
プロシージャ内に記述しています。
そのためプロシージャがコールされる度に再定義処理される
のですが、これは問題無いのでしょうか?
---- ▼ プロシージャ内部
--「xp_cmdshell」を使用できるようにする再定義処理
EXEC sp_configure 'show advanced options', 1
RECONFIGURE
EXEC sp_configure 'xp_cmdshell', 1
RECONFIGURE
EXEC master..xp_cmdshell '<コマンド>〜'
----
再定義処理ってなんなんだよw
MSSQL上のテーブルAのデータをSELECTして動作する
既存プログラム(VB6、バイナリのみ配布)があって、
テーブルAをPostgres上に移して、MSSQLからリンクサーバで
PostgresのテーブルAにアクセスするような変更を検討しています。
PostgresにOPENQUERYを投げるViewを作成し、
Management Studio上ではSELECT/INSERT/UPDATE/DELETEできることを
確認したのですが、既存プログラム上からテーブルAにSELECTするような動作をすると
プロファイラ上で以下のようなログが出てしまいます。
declare @p1 int
set @p1=0
declare @p3 int
set @p3=557064
declare @p4 int
set @p4=98305
declare @p5 int
set @p5=0
exec sp_cursoropen @p1 output,N'SELECT UserID FROM テーブルA WHERE Key = 30',@p3 output,@p4 output,@p5 output
select @p1, @p3, @p4, @p5
p1、p3、p4の初期値が、他の正常に動作する時のログとかなり違う値になってます。
実際に上記をManagement Sdudio上で実行した結果は、
p1〜p5に正しい値が入っているっぽいのですが、
このp1〜p5に格納される初期値はどうやって決定されているのでしょうか?
SQL Server Compact3.5からSQL Azureにデータを移行させたいのですが
一番早い方法って何がありますか?
単純に20万件ぐらいを1レコードずつInsertで送ったら2時間以上かかった・・
もう2008のデータ型追加でベースは完成した感じだな
移行って何?
1回やるだけの移行なら、それでいいんじゃねーの?
.通常運用の一環として毎日1回やるとかいう話?
366 :
NAME IS NULL:2012/03/28(水) 15:52:10.30 ID:TYExMCaj
あるソフト製品の不具合を何とかしたいと思って
製品が作成するSQLServerDBのストアドを解析しようと思ってマネージメントスタジオで
ソースを開いて見ようとしたのですがエラーが発生して開けませんでした。
エラーメッセージは要約すると
(プロバティTextHeaderは使用できません。プロバティが存在しないかアクセス権がないため…)
といったところです。
saユーザで開こうとしたのですがダメでした。
ストアドのプロパティで開いて権限にてpublicロールに全権限を与えたのですがそれもダメでした。
このアクセス権を得るにはどうしたらよいでしょうか。
367 :
NAME IS NULL:2012/03/28(水) 16:24:55.93 ID:sU6EWSwl
あるソフト製品のメーカーに電話する たぶんサポート部門ってとこだと思う
ちゃんとしたユーザーだと認めてもらえたら、そこのおねぃさんが懇切丁寧に教えてくれる
368 :
NAME IS NULL:2012/03/28(水) 17:07:39.74 ID:TYExMCaj
何か誤解をしているようですけど正規ユーザですがサポート契約はないんです。
例え契約があったとしても改変を疑われることになるので教えてくれないでしょうね。
SQLServerのストアドって、ソースを暗号化して格納できるんじゃなかったっけ
370 :
NAME IS NULL:2012/03/28(水) 19:31:01.32 ID:TYExMCaj
そういえばメッセージの最後のちらっと
テキストは暗号化されています。と書いてました。
もう諦めるしかないのですね。
371 :
NAME IS NULL:2012/04/01(日) 23:04:20.96 ID:Raxe05Ul
SqlServer2012の大幅値上げワロタ。
8コアXeon一個だと
SQL Server 2008 Standard プロセッサライセンス 約100万
↓
SQL Server 2012 Standard プロセッサライセンス 約270万
爆上w
372 :
NAME IS NULL:2012/04/09(月) 16:26:51.14 ID:DSyulrqx
質問!
Microsoft SQL Server CE で MAXさいずが256MBのDBを作成したのだが、
容量を拡張することはできますか?
373 :
372:2012/04/09(月) 16:28:47.67 ID:DSyulrqx
"Data Source=●●●●.sdf;max database size=4000" で接続したのに、容量オーバーになってしまいました!
新聞購読を止めて、月3000〜4000円、年間36000〜48000円の節約
その上日本を貶め、国民を虐げる売国新聞の世論工作の影響力が減って一石二鳥
これはもう新聞購読を止めるしかない
375 :
NAME IS NULL:2012/04/12(木) 11:46:38.39 ID:FMovjAWG
1msec周期で収集したデータ(100点くらい)を
SQLServerのデータベースに格納したいのですが
その場合のテーブルってどうなるんでしょうか?
例えば、列をData1,Data2...,Data100として
1msecごとにレコードを増やしてく感じでしょうか?
期間は1年くらい欲しいので単純計算でレコード数が31536000000件にもなります。
あとで取りだす時にすごく大変そうだし時間かかりそうです
そもそもこういうデータはデータベースにしないのが普通でしょうか?
何かいい方法しりませんか?
後で利用するとき1msec単位のデータが欲しいなら、1msごとに1レコード作ったほうが便利だろうな
日もしくは時間 単位でテーブルを作るとか、
取り出しが面倒になるけど
どういう集計をしたいかによるけどSQLServerじゃなくてもいいんじゃね?
データの利用方法によってはテキストで十分だったりする
「将来使うかも」ってレベルのデータなら、バイナリで突っ込んでおくのも手だわな
質問
SQLServer2000とクライアントアプリケーションが同じPCに存在するシステムがあって、
SQLServerへの接続はLPCで行われてるんだけど、SQLServer2005に移行したらTCP/IPで
接続されるようになってしまいました。
今までどおりLPCで接続したいんだけど原因としては何が考えられますか?
プロトコルのSharedMemoryは有効になってます。
言語はC++で、db_commandてやつでストアドを呼び出してます。
>>380 「共有メモリ プロトコルを使用してローカルで接続する」
そのままぐぐってけろ
>381
ありがとうございます。
接続文字列で(local)は指定してありますが、
どうやら2005の場合はMDACのバージョンが2.8だと
LPC接続ができないようですね。
>383
ありがとうございます。
lpc:(local)
で試してみましたが、TCP/IPになるようです。
np:(local)
ではNamedPipesになってくれるんですが。。
386 :
NAME IS NULL:2012/04/26(木) 15:46:25.75 ID:wJ/+B45Q
SQLServer 2005 Expressのビルトインアカウントを
バッチ処理にて変更する方法を教えてください。
scコマンド
新SQLSERVERのExpress版って出るのかな?
複数コアCPUの扱いはどうなるんだろ
コアの扱いがどうなろうともメモリ1GBしか使えないから大差ないよ。
そういえば1GBの制限があったか
せめて2コア4GB程度まで使わせて欲しい
391 :
NAME IS NULL:2012/05/07(月) 07:40:41.95 ID:NrZavR/m
開発用サーバにSQLServer2008をインストールするんですけど照合順序はJapanese90_BIN2にしとけば間違いないですか?
何で選択肢が複数あるのか考えろよ
つまらない質問なんですが、
SQL Server 2005のManagement Studio Expressでテーブルの中身を見るとき、
オブジェクトエクスプローラでテーブル名を右クリックして「テーブルを開く」を選択しているのですが、
これがけっこう面倒くさいです。
もっと簡単に開く方法はないでしょうか?
394 :
NAME IS NULL:2012/05/09(水) 21:07:20.56 ID:MXpaljD2
オブジェクトエクスプローラが出なくなってしまいました
どうしたらいいですか?
F8
396 :
NAME IS NULL:2012/05/15(火) 06:30:10.26 ID:bfF6xyzj
語気光線( ´Д`)y━・~~語気光線( ´Д`)y━・~~語気光線( ´Д`)y━・~~
語気光線( ´Д`)y━・~~語気光線( ´Д`)y━・~~語気光線( ´Д`)y━・~~
語気光線( ´Д`)y━・~~語気光線( ´Д`)y━・~~語気光線( ´Д`)y━・~~
語気光線( ´Д`)y━・~~語気光線( ´Д`)y━・~~語気光線( ´Д`)y━・~~
語気光線( ´Д`)y━・~~語気光線( ´Д`)y━・~~語気光線( ´Д`)y━・~~
語気光線( ´Д`)y━・~~語気光線( ´Д`)y━・~~語気光線( ´Д`)y━・~~
語気光線( ´Д`)y━・~~語気光線( ´Д`)y━・~~語気光線( ´Д`)y━・~~
語気光線( ´Д`)y━・~~語気光線( ´Д`)y━・~~語気光線( ´Д`)y━・~~
語気光線( ´Д`)y━・~~語気光線( ´Д`)y━・~~語気光線( ´Д`)y━・~~
語気光線( ´Д`)y━・~~語気光線( ´Д`)y━・~~語気光線( ´Д`)y━・~~
語気光線( ´Д`)y━・~~語気光線( ´Д`)y━・~~語気光線( ´Д`)y━・~~
語気光線( ´Д`)y━・~~語気光線( ´Д`)y━・~~語気光線( ´Д`)y━・~~
語気光線( ´Д`)y━・~~語気光線( ´Д`)y━・~~語気光線( ´Д`)y━・~~
語気光線( ´Д`)y━・~~語気光線( ´Д`)y━・~~語気光線( ´Д`)y━・~~
語気光線( ´Д`)y━・~~語気光線( ´Д`)y━・~~語気光線( ´Д`)y━・~~
397 :
NAME IS NULL:2012/05/15(火) 19:23:48.59 ID:bfF6xyzj
それよりゴキブリ高専卒どもはワシにさっさと謝罪せんか!
それよりゴキブリ高専卒どもはワシにさっさと謝罪せんか!
それよりゴキブリ高専卒どもはワシにさっさと謝罪せんか!
それよりゴキブリ高専卒どもはワシにさっさと謝罪せんか!
それよりゴキブリ高専卒どもはワシにさっさと謝罪せんか!
それよりゴキブリ高専卒どもはワシにさっさと謝罪せんか!
それよりゴキブリ高専卒どもはワシにさっさと謝罪せんか!
それよりゴキブリ高専卒どもはワシにさっさと謝罪せんか!
それよりゴキブリ高専卒どもはワシにさっさと謝罪せんか!
それよりゴキブリ高専卒どもはワシにさっさと謝罪せんか!
それよりゴキブリ高専卒どもはワシにさっさと謝罪せんか!
それよりゴキブリ高専卒どもはワシにさっさと謝罪せんか!
それよりゴキブリ高専卒どもはワシにさっさと謝罪せんか!
それよりゴキブリ高専卒どもはワシにさっさと謝罪せんか!
それよりゴキブリ高専卒どもはワシにさっさと謝罪せんか!
それよりゴキブリ高専卒どもはワシにさっさと謝罪せんか!
それよりゴキブリ高専卒どもはワシにさっさと謝罪せんか!
それよりゴキブリ高専卒どもはワシにさっさと謝罪せんか!
>>397 高専卒に勝てないのか
奴らは、優秀だからな お前より
399 :
NAME IS NULL:2012/05/31(木) 18:29:18.19 ID:abZtCBFW
はげ
最近このMicorosoft SQL Server Compact Edition というのを使ったプログラムを導入したんですが、
スタートメニュー - プログラム の中にプログラムへのショートカットが存在してはいるんですが、
実体がどこにあるのか分かりません。
これはネットワーク経由で実行されているプログラムという事でしょうか?
常に監視されているような状態ですか?
実装自体はライブラリ側にある、組み込み型DBじゃろ
accessのmdbファイルを.netとかから使うのをイメージすると良いのでは
システムフォルダかどっかにDLLがゴチャゴチャとあったはず。
今晩は
ご存知でしたら教えてください。
SQL Server 2008 R2 workgroup 5cal付DVDが\100,000で現在動作中。
workgroupライセンスのみ追加で10cal買いたい
都合15calで使いたい。
追加のcalはworkgroup なのでボリュームライセンスのみの提供
しかも6/1現在提供は終わってるので2012のダウンで買わんとだめ。
するとwgエディションは廃止でなおかつ\33,000へ値上がり x10cal=\330,000
ってことはSQL Server 2008 R2 5cal付DVDを新たに2枚買うと\200,000
ついてくる5calx2=10calを使いたい。これってOK?
追加したSQL Server 2008 R2 5calx2枚のサーバライセンスを使用せずに
5calx2=10calのみを利用する目的でってことなんですが。
もうそのままMSにきけよ
まあダメだろうな
円高なのに一方的な値上げとかMSぼろ儲けですな。
無料版がまともにインスコできんくてイラつく!
システム構成チェックで不正フォルダー警告ってなんなんだよ
アンインスコもできねーし
めんでー
sqlを書いて実行してグリッド形式で結果を得るようなフリーのツールってありませんか?
ODBC経由ではなく、native接続出来るものを探しています。
商用で言うところのSI ObjectBrowserみたいなツールです。
OracleならCSEとか知ってるんですが、SQLServerだとNative接続出来るツール
が少なくないですか?
>ODBC経由ではなく、native接続出来るものを探しています。
>>409 それADOだったような
411さんの挙げてる公式ツールをなぜ今まで使わなかったのか不思議
ちょっことSQL書いてデータ見たいだけでこのサイズのインスコはねーよ。
native接続にこだわる理由がしりたい
>>413 それならsqlcmdでもODBCツールでもいいじゃん
Microsoft Queryを使って、最強のグリッド表示ソフトEXCELで表示すれば良いんじゃね
>>409 第三者の横レススマソ
これいいね、もっと早く出会いたかった
ノートに会社とおなじ環境入れてるんだが、これは軽くていい
こいつに出会うのに41年かかっちまったぜ
謎の現象の原因がどうにも分からないので質問させてください。
oracleのdual表みたいな感じで以下のような意味のないクエリを書いて、
'12345678901234567890'が1つだとSSMSで0秒で返るのですが、
SELECT
'12345678901234567890'
'12345678901234567890'を29個以上に増やすと極端に遅くなるのですが、
なにか分かりますか?
SELECT
'12345678901234567890',
'12345678901234567890'.
'12345678901234567890',
・
・
・
(29個以上)
1回目:0秒、2回目:2秒、3回目:8秒、4回目:24秒、5回目:60秒・・というように
どんどんレスポンスが遅くなります。ado.netなどからやっても一緒です。
普通にテーブルを指定してフィールドを沢山指定しても一緒です。
見た感じでは、クエリのサイズが影響しているように見えるのですが・・
DBサーバーでは再現しません。何度やっても一瞬で返ります。
select top 1 を指定したらどうなりますか?
>>420 変わらず、同一接続で繰り返す度どんどん遅くなります。
422 :
質問です:2012/06/28(木) 17:24:23.41 ID:???
いまWindows2000 ServewrとSQL Server2000を使って、
さらに自分(開発者)のマシンまでWindows2000という化石状態です。
せめて自分のマシンをVistaにバージョンアップしようとSQL Server2000の
管理ソフト(Enterprise Manager)をインストールしたら、インストーラーに
拒否されました。(Vistaを異物と認識したのか?)
というわけで
Serverは古いままで、新しいクライアントOSから生産性が良く
DBテーブルを変更できる管理ツールは存在するのでしょうか?
(SQL文からではなく、という意味)
いろいろ調べてみたのですが最低でもSQLServer2005ぐらいが必要だという
印象を受けました。
ありえないから聞いたのですが・・
426 :
419:2012/06/28(木) 21:00:45.88 ID:???
自己解決しました。
VMwareの仮想マシンにDBがあるのですが、VMwareのバージョンを2.5.5から4.0.4に
上げたら直りました。理屈は分かりませんが・・。前はそんなことは起きなかったので、
バージョンではないとは思います。
全然原因わからんやん
っていうかVM古っ
上げても古っ
sqlserver2k8を最初にインストールする際、windows認証モードでインストール
した場合のsaのパスワードって何が設定されているんですか?
429 :
422です:2012/06/29(金) 13:18:15.11 ID:???
>>423 あの後、ご紹介のサイトからダウンロードを試みました。
何がなんだか分からないくらい、あっちこっち飛ばされてやっと今インストール完了しました。
Management Studio Expressの2008からアップグレードされて2012の最新型が載りました。
ありがとうございました!
430 :
423:2012/06/29(金) 15:28:18.49 ID:???
>>429 あ、2012出てたのか。知らんかった。すまん
おめでとう
超初心者ですが質問させて下さい。
先日会社のパソコンを買いかえて今まで使っていた会計ソフトをインストールしようとしたら
SQL Server7.0はこのWindowsとは互換性がありません。と表示されてセットアップが中断されてしまいます。
この会計ソフト自体10年近く前のものなので古すぎて使えないのでしょうか?
現在のOSがWindows7で以前まで使っていたOSはXPです。
SQL Server7.0をWindows7で使えるようなプログラムがあれば教えて欲しいのです。
スレ違いや見当違いの質問かもしれませんがよろしくお願いします。
>>431 その会計ソフトのメーカーに問い合わせることをお薦めします。
>>432 そうですね。週明けに問い合わせてみます。
迅速な回答ありがとうございました。
435 :
NAME IS NULL:2012/07/02(月) 19:40:29.07 ID:1drmKlaG
>>431 Virtual PCだよ
VMwareでもいいがね
SQL Server使いの皆さんはOracleをどう思いますか?
SQL Server 2000/2005あたりで開発していた自分は、Oracle 11gR2を使ってみてストアドの自由度が高いなと思いました。
けど、Manegement Studioほど便利なツールがないのがOracleの残念なところかなと思います。
SQL Serverにpackageがあればもっと便利になるのに
別にどうもこうもないが、システムインテグレータのObject Browser使えば不便は感じない。
ステマじゃねーよw
>>436 SQL Serverと比較してOracleのダメなところ。
・NULL(空文字とインデックスの扱い)
・共有カーソルのバインドピーク問題をアプリ側で回避できない。
・マルチバイト列名、テーブル名と相性が悪い。
・SQLの文法が厳格すぎて縛りが多い。(単独ではできることを複数組み合わせてもうまく動かない。)
・SELECT系のストアドが気軽に書けない。
・Ora600エラー
Oracleの嫌いなところ
ボラクルってるところ
クライアントのインストールが面倒
標準でついてくるツールが残念
>>436 完全な行ロックはOracleの圧勝
JOINしたSELECT文をUPDATEに書き換えただけで
他テーブルの値を使った更新が出来るのはSQL Serverの利点
逆にOracleやってSQL Server触ったら
TRUNCATEもROLLBACK対象で驚いた
NULLは値が入ってない場合IS NULLで判定できるから便利だけどなあ
バグ情報の公開はMSの圧勝
nullと区別出来ないほうが面倒
他の色んなdbと比べてもoracleだけ違うし
何でオラクルはnullの扱いあんなんなっちゃったんだろ
oracleはもやしっ子。結構すぐ拗ねる。拗ねられるとご機嫌取りが大変。
sqlserverは強い子。拗ねない
本体じゃないけど初期の頃のSSMSは酷かったな
nullの扱いと大文字しか認識しないのは気に入らない。
開発者の立場としては圧倒的にOracleが好き。ていうかSQLServerが糞杉。
しかし管理者の立場としてはSQLServerの方が楽。ていうかOracleがピーキー
過ぎて死ぬ。
ピークの性能はOracleの方が上。しかしその性能を維持するのが結構面倒で、
しかも劣化した時のパフォーマンスの落ち方がマジでハンパ無い。10分で終わ
ってた処理がある日突然4時間になるとかマジで起きる。
SQLServerはそこそこのパフォーマンスをそこそこ維持してくれるのは安心感
がある。あと、純正管理ツールの出来は明らかにSQLServerが上。
しかし金に糸目を付けなければ、開発ツールはOracleの方が使い勝手の良い
サードパーティ製が揃ってる。
保守契約結ばないとパッチももらえないOracleなんて・・・
今仕事でMySQLをDBとして開発してるけど、
OracleとSQLServerって、本当にいいDBなんだなって思う
MySQL使うときはただの入れ物としてだから何も思わんが
MySQLってそんなにウンコちゃんなの?
OracleとSQL Serverしか弄ったことないけども
オフィシャルで日本語のツールが無いのは、オープンソースのお約束としても、
ビューにサブクエリが使えない、ビューに最適化が効かない
とか、その辺かな
設定が難しくて、日本語のカラムを使うとODBCツールが落ちるとか・・・
MySQLはなんで持て囃されてたのか分からんくらい低機能
実際にはSQLiteに似た立ち位置だと思うんだが
その昔は OSS にしては検索系の性能が良かったんだろ。
SQLite も、信じられないぐらい低機能だし。
ossならもうポスグレ一択だわ…
>>452 MySQLってRDBじゃなくて爆速だけが取柄のindexファイル。
>>453 SQLiteはフットプリントが1Mくらいしか無いから、低機能で良いだろ
SQLiteは高機能だろー
あのサイズで全文検索とか
拡張機能とかいろいろあるぞ
>>456 ああ、すまん。
別に低機能だからダメっていってるわけじゃない。
適材適所だよね。
ただ、機能はいいけど型のチェックをちゃんとしてくれる奴誰か作ってくれないかなぁ〜 と思う。
Windows の SQL-Server Compact Edition みたいな奴。
SQL Serverってプロシージャーが結果セットを返せられるらしいんですが、
create procedure TEST(p1 in decimal(10,4))
というプロシージャーがあったとして
select * from TEST(10.3) where 〜
みたいな感じで普通のテーブルとまったく同じように、しかも引数まで付
けてセレクトする事が可能なんでしょうか?
テーブル型じゃなくて構造体を返すストアド関数って作れないですよねー
まず構造体の定義を教えてくれ
たとえば
構造体 (
日付 as date
単価 as money
)
Create Function F_前回売上をゲット(商品ID as int) (
declare result as 構造体
select 〜
・・・
・・・
return result
)
という定義があらかじめされてて(T-SQLの文法にあってないのは割愛)
SELECT F_前回売上をゲット(商品.商品ID).日付, F_前回売上をゲット(商品.商品ID).単価
FROM 商品
てな感じのとき、
商品テーブルが1000件だったら、F_前回売上をゲット が1000回だけ動いて値が出てくる感じ
訂正
SELECT F_前回売上をゲット(商品.商品ID).日付, F_前回売上をゲット(商品.商品ID).単価
FROM 商品
WHERE ×××××××
商品の母集団は10万レコード以上あって、WHERE で1000件ぬけてくる条件のときの前提っす
追記
F_前回売上をゲット の処理には1回あたり 0.01秒かかるの仮定
今は構造体が使えないから
Create Function F_前回売上日付をゲット(商品ID as int) (
declare @result as date
select @result =日付 from 〜
return @result
)
Create Function F_前回売上単価をゲット(商品ID as int) (
declare @result as money
select @result =単価 from 〜
return @result
)
ほとんど抽出ロジックが一緒なのだが、2つに分けるとそれぞれを呼び出して使うと
0.01秒×2 の時間がかかるようになってしまう、と
いろいろ無理。
「テーブル変数」でぐぐれ
>>463 だから、お前の言うSQLServerでの構造体って何よ?
お前の例なら、日付と単価を持つテーブルで良いと思うけど
.NET Framework CLRでのクラスや構造体なら、ユーザ定義型で定義できるはずだから
やれば出来なくはないと思うが。やったことないしやる気もないけど
471 :
459:2012/07/13(金) 03:00:50.29 ID:???
>>460 既にFOOというテーブルがあって、
create procedure test as
begin
select * from foo;
end;
これでtestと言うprocedureは正常に作成されました(exec testで結果が返って
来る事を確認しました)しかし
select * from dbo.test;
で実行しても「オブジェクト名 'dbo.test' が無効です」と言われてしまいます。
テーブル変数を返すユーザー定義関数にするのが手っ取り早い
>>468 テーブル型を返すユーザー関数を作ると
それは from の中で使う前提になってしまう。
>>464 の例で言えば
FROM 商品 LEFT JOIN F_前回売上をゲット() AS 前回 ON 前回.商品ID=商品.商品ID
となると思うが、WHERE で抜いてく対象商品以外のものも、いったんは一緒に抜いておかないといけないので無駄過ぎる
select の中で使いつつ、なんども抽出SQL文が走るのは嫌なんだけど・・
もうシランけど、sqlserverとか関係なしに仮にできるとして、
普通の言語で考えれば、ゲット2回してるんだから2回走るんじゃないか・・
たぶん無理だと思うけど
select top 1 日付,単価 from ×××× where ×××××××××××× order by 日付 desc
だと1回の SQL文の発行なので、これを構造体としてセットでもらって使いたいのだが
普通の(構造体じゃない)スカラー関数だと
select top 1 日付 from ×××× where ×××××××××××× order by 日付 desc
select top 1 単価 from ×××× where ×××××××××××× order by 日付 desc
だと2つ作って2回呼ばないといけない。無駄だろ?って話
テーブル型関数だと
select 商品ID,日付,単価 from (
select 商品ID,日付,単価
,row_number() over (partirion by 商品ID order by 日付 desc) AS キー
from ×××× where ××××××××××××
) where キー=1
こんな風になると思うけど、必要ない商品の分まで抜いてくるのは無駄
けなす訳ではないが、とことん頭がSQLに向いてないな
SQLはロジックで考えるんじゃなくて集合で考えるものだぞ
出来るだけストアドで仕事させようと思うと
当然に出てくる話じゃないですかねー
.NET 側からは、データバインドだけしてオシマイみたいな感じで
普通にカーソル回せよ。
ここまでに出てきてないよく使うパターンだとこんなとこ
@テーブル値ファンクションでcross apply
AINSERT INTO Table変数 EXEC ストアドプロジージャ
BCreate #一時テーブル 〜
ストアド内で#一時テーブルへインサート
本当にカーソルまわさないとできない処理なんて実は1割もない。
たぶん、普通にSQL書いて日付と単価持ってくるだけで済むと思うんだがな
普通のSQLでそれが出来ないならそもそもテーブル設計が悪い
>select top 1 日付 from ×××× where ×××××××××××× order by 日付 desc
>select top 1 単価 from ×××× where ×××××××××××× order by 日付 desc
>だと2つ作って2回呼ばないといけない。無駄だろ?って話
普通に考えて典型的パターンはこうだろ
select 日付,単価 from ×××× where 日付=××××
まあ、日付でTOP1とる必要があるならそうすれば良いけど
どっちにしろクエリ2回発行する必要なんてない
商品検索画面で条件を入れると商品に一覧(グリッド形式)で出る画面をつくるとします
商品ID 品名 規格 前回売上日 前回売上単価
SELECT 商品.商品ID,商品.品名,商品.規格
,(SELECT TOP 1 日付 FROM 売上 WHERE 売上.商品ID=商品.商品ID ORDER BY 日付 DESC) AS 前回売上日
,(SELECT TOP 1 単価 FROM 売上 WHERE 売上.商品ID=商品.商品ID ORDER BY 日付 DESC) AS 前回売上単価
FROM 商品
WHERE 画面で入力された条件
これって美しくないでしょ?
SQLの書けない子か。
むしろテーブル設計の出来ない子。
テーブル設計が悪いとみんなに迷惑がかかるんだよね・・
そしてその迷惑はずーっと続く。
>>482 簡単に書けるけど??
WITH CTE AS (
SELECT
商品ID
, 日付
, 単価
, ROW_NUMBER() OVER(PARTITION BY 商品ID ORDER BY 日付 DESC) AS 商品毎の日付逆順
FROM
売上
)
SELECT
CTE.商品ID
, 商品.品名
, 商品.規格
, CTE.日付 AS 前回売上日
, CTE.単価 AS 前回売上単価
FROM
CTE
INNER JOIN 商品
ON CTE.商品ID = 商品.商品ID
AND CTE.商品毎の日付逆順 = 1
WHERE
画面で入力された条件
ウィズ句使うの辞めろ、基地外が!
みんなが迷惑するのが分からないのかよ。
このテーブル設計で俺がやるなら
WITH 商品別最終売上日 AS (
SELECT 商品ID,MAX(日付) AS 日付 FROM 売上 GROUP BY 商品ID
)
SELECT
商品.*,
売上.日付 as 前回売上日,
売上.単価 as 前回売上単価
FROM 商品
JOIN 商品別最終売上日 ON 商品別最終売上日.商品ID=商品.商品ID
JOIN 売上 ON 売上.商品ID=商品別最終売上日.商品ID AND 売上.日付=商品別最終売上日.日付
こうか
WITH 商品別最終売上 AS (
SELECT 売上.商品ID,売上.日付 as 前回売上日,売上.単価 as 前回売上単価
FROM 売上
JOIN (SELECT 商品ID,MAX(日付) AS 日付 FROM 売上 GROUP BY 商品ID) t
ON 売上.商品ID=t.商品ID AND 売上.日付=t.日付
)
SELECT
商品.*,前回売上日,前回売上単価
FROM 商品
JOIN 商品別最終売上 ON 商品別最終売上.商品ID=商品.商品ID
こうだな
いずれにしろCTEじゃなくてビュー作っとく
パフォーマンス気になるならそのビューにインデックス張る
>>487 自分が解らないものを使ってると基地外あつかいする人ですか?
だれにどんな迷惑がかかるんですか?
>>487 みんなって、基本情報レベルのSQLしか理解できない
コボラー上がりのPMとかのことですか?
WITH使わなくても書けるだろ?
>>491 再帰じゃないし再利用するわけでもないからWITHなしでもたしかに書けるが
>>488はビューに切りだすべき所を明確にするためにWITH使ってる
サブクエリにだらだら書くならCTE使う方が綺麗に書けると思う
ここSQL Serverスレだし、使うのに問題ないだろ
CTE使えんぐらい古いバージョンの奴はしらん
>>489-490 自演乙w
ウィズ句の功罪を知らずに不用意に馬鹿がウィズ句使うと処理速度が遅くなって
最適な実行計画がチョイスされなくなる場合があるんだよ。
お前みたいな馬鹿はウィズ句使うとか小賢しい事考えると逆に迷惑。
CTE使わなければ常に最適な実行計画で実行されると信じてるのかねぇ
SQLチューニングはそんな単純な問題じゃないんだが
多少結果が遅かったとして、それでみんなにどんな迷惑がかかるって言うんだか
単に文句言いたいだけか、人を馬鹿にしたいだけの人か
せめて自分でWITH使わないで書きなおしたものアップするぐらいできんのかね
みんなってこのスレとかそんな広い範囲じゃなくて、
開発メンバーとかシステム的にとか顧客とかそういうレベルじゃないのw
いまんところ cte ってメンテできない人多いからな
こういうところでガシガシ使えば慣れる人もでてくるだろw
>多少結果が遅かったとして、それでみんなにどんな迷惑がかかるって言うんだか
お前が趣味でSQL serverを叩いてるだけなら何も言わんけど、SQL書いて金貰ってるんだったら
速攻でIT以外の業界への転職しろ。with云々に関係なく、お前みたいなのがいるとマジ邪魔。
ネットにいるよねえ。
こういう、コードを見ると反射的にレビューしちゃう人。
空気が読めないとはこういう人のことね。
レビューを期待して書かれたコードじゃないし
レビューする場面でもないのにね。
>>469 Oracleだとwith〜なんてとっくの昔からあるんだけど、2005になってようやく
低機能なwithが実現したSQL Serverだと、まだユーザのレベルが追いついてない
んですねw分かりますw
こいつ、保守性とか考えたことないんだろうな
もしくはWITHさえ使わなければオプティマイザ任せでOKな世界しかしらないのか
ID出ない板だと自演し放題だな >500
>>499 Oracle 使いはレス番もまともに書けなくてもいいんですねwわかりますw
>>498,
>>500 どうせネットとかで仕入れた知識をひけらかしたいだけだろ。
放置しときなよ。
>>497 オレの職場にもこんな感じで自分の知ってる知識だけで
物事を自分が納得できるレベルに単純化して全て理解した気になってるヤツいるわぁ
(例:一度、自己結合でパフォーマンス悪化したケースを経験し
自己結合は絶対使ってはいけない機能と思い込むみたいな)
バカの一つ覚えという言葉がぴったりの文系脳筋プロマネの典型だよ
実行計画見せて問題がないって説明しても、実績が無い物は使えないとか
バグがあって上手く動かないケースがあるかも知れないって言って
自分の知識に無いものや、一つでもデメリットを知っている技術を徹底的
に否定するんだよ。
505 :
504:2012/07/14(土) 22:17:16.85 ID:???
506 :
NAME IS NULL:2012/07/14(土) 22:39:48.39 ID:RNygfzuW
>>482 SELECT
商品.商品ID
, 商品.品名
, 商品.規格
, F.日付 AS 前回売上日
, F.単価 AS 前回売上単価
FROM 商品
CROSS APLLY (
select TOP1 日付,単価
from 売上
WHERE 商品ID = @商品ID
ORDER BY 日付 DESC
) AS F
WHERE
画面で入力された条件
507 :
NAME IS NULL:2012/07/14(土) 22:43:01.77 ID:RNygfzuW
こっちが正解
>>482 SELECT
商品.商品ID
, 商品.品名
, 商品.規格
, F.日付 AS 前回売上日
, F.単価 AS 前回売上単価
FROM 商品
CROSS APLLY(
SELECT TOP1 売上.日付,売上.単価
FROM 売上
WHERE 売上.商品ID = 商品.商品ID
ORDER BY 売上.日付 DESC
) AS F
WHERE
画面で入力された条件
508 :
504:2012/07/14(土) 22:49:10.57 ID:???
CROSS APLLY句使うの辞めろ、基地外が!
みんなが迷惑するのが分からないのかよ。
あーはいはい
>>509 自分が解らないものを使ってると基地外あつかいする人ですか?
だれにどんな迷惑がかかるんですか?
512 :
482:2012/07/15(日) 15:25:40.17 ID:???
WITH 〜 とか CROSS APLLY 〜 とか
初めてみました。
どんな風に動くのか、ちょっと勉強してみます。
ありがとうございました
513 :
NAME IS NULL:2012/07/16(月) 00:37:04.10 ID:PCqVl3Xo
WITH 〜 とか CROSS APLLY 〜 とか
7年近く前から実装されてる機能なのに、どれだけ広まってないんだよw
JAVA厨がORマッパをゴリ押しで流行らせた影響なのか、ほとんどの人のSQLについて
の知識がSQL-92仕様で止まってる?
もうマッパーとLINQがないと発狂するレベルになりました
LINQは認めるがO/Rマッ裸は認めん。
システム開発って観念で考えると、アプリレベルで使うSQLにWITH使うのはどうだろうとは感じる
必要ならちゃんとビュー作っておくべきじゃないのかと
例外は再帰SQLか。どうしても再帰が必要ならやむをえないかなぁ
そういう場面はあまり多くないとは思うが
特定機能でのみ使うのにグローバルに見えるとこに置きたくないとか
複数で使うならビューにするかな
大抵使うのは火消しで入ったプロジェクトでDB設計がクソなときとかが多いけど
まあ知ってて当然とは思うが、日頃バリバリ使うかと言われるとね。
WITHはバッチ中の一括更新処理や、一覧系の複雑な帳票作るときに
日頃バリバリ使ってるんだが…
まあ、入力系画面作るだけならまったく必要ないけど。
大抵使うのは (...中略...) DB設計がクソなときとかが多いけど
DB 設計が糞かどうかは視点によるだろ。
例えば多数の機能から見たら最適なDB設計であっても、ある一つの機能を作る側から見たら糞設計に見える。
仮に少数の機能にDB最適化したらその他大勢の難易度が何倍にも膨れて開発不能とか。
必要悪な糞設計は必ずあるし、それを完全に排除した、誰が見ても正しい設計なんて、本当に単純なシステム以外ではあり得ないよ。
自分の流儀に合わない設計を見ると
糞とかけなすヤツいるよなあ。
正解なんてない世界なんだから
動けばいいんだよ動けば。
>>521-522 > 誰が見ても正しい設計なんて、本当に単純なシステム以外ではあり得ないよ。
誰が見ても糞設計は、いくらでもあるんだが。
普通に設計すれば不要なのに、with 使ってドヤ顔して奴とか (w
不要っていうのは
なくてもOKってだけのことで
あるとNGってことじゃないんだぜ?
>>524 みたいな奴を「不要」なレスと言う。
なくてもOKだし、もちろんあると「NG」。
ただでさえ暑いのにお前ら熱すぎる
暑さで頭がわいてるだけだろ。中身スカスカの自己主張の羅列ばっかw
大体、今時SQLを書くこと自体が時代遅れな訳で。
時代遅れの技術であーだこーだ言い合ってるジジイうざすw
>>523 誰が見ても糞な設計をターゲットにして議論してもナンセンスなんだが馬鹿なの?
>>527 そうしていつの時代も最後はCOBOL脳に回帰する。
>>528 だから with とか cross apply とかで議論なんてナンセンスと書いてあるんだが、理解力ないのか?
反論したいなら、誰が見ても糞でない設計で with とか cross apply とか使ってる例挙げて議論しなよ。
with は、
>>516 の言うように再帰ぐらいしか思いつかない。
そもそも CROSS APLLY に誰も突っ込まない時点で、日頃ドンだけ使ってないかがわかろうと言うもんだ。
>>530 誰が見ても糞でない設計があると思ってた時代が俺にもありましたw
>>514 巷ではそれが普通なのか?
Entity FrameworkもLINQも言葉すら知らないし
TableAdapterを使わせると発狂するPGを相手にしているオレの立場は Orz
さすがに「linq?なにそれ?美味しいの?」て言う技術者は面接でお引取り願うわ。
LINQ to SQL は技術的にはおもしろいけど、仕事で使う物じゃないだろ。
>>533 LINQでぐぐると福岡のご当地B級アイドルグループがトップになるんだが・・
>>534 SQLを直接触れないとチューニングで困る気はするな。
Entity Frameworkを実務で使っている人居るの?
社内プロジェクトとかじゃなくて。
>>530 CROSS APPLYに誰もつっこまないのは、
どう見てもアレで正しいからだろうが。
なんでツッコミが入らない物や、お前が理解出来ない物は低俗って発想になるんだよ。
立っている者は親でも使え
SQL仕様にあるのならCROSS APPLYでも使え
>>538 > CROSS APPLYに誰もつっこまないのは、
注意深くない奴は、マ辞めた方が周囲も本人も幸せだぞ。
プロなら、そこにあってもちゃんと考えてから使うんだよ
保守性、開発効率、実行効率、、、 考えることはいくらでもあるんだ
>>541 先ず存在を知らなきゃ使えない
そして使って見なきゃわからない
それから有用かどうか考えれば良い
以前の仕事で「JOIN使用禁止」って案件があった。
仕事だとそういうもん。
>>542 キミが言ってる事はもっともなんだけど、そういうのは業務時間外でやってね。
仕事前に有用か否かの答えを用意してきてから仕事に臨んでね。
それが社会人の常識ですから。
>>543 以前ってどのくらい昔なんだ?
FROMとWHEREで結合書くのが主流だった頃にその規則があった所はある
546 :
543:2012/07/16(月) 16:17:30.74 ID:???
>>545 2003年。
SQL Server2000の頃。
547 :
543:2012/07/16(月) 16:19:07.71 ID:???
ちなみにJOIN使用禁止ってのは「JOINの代わりにWHEREで結合条件書きなさい」
という意味ではなく、「1つのSQL内に複数テーブルを出現させては駄目」という
意味な。
>>544 そういうDQNな会社で働くのは嫌だな。
社員のスキルアップも業務の一環ですよ。
随分と昔だけど UNION 禁止で UNION ALL だとOKってのがあったな。
>>549 キミよりスキルがあって安い給料で働く奴隷は今のご時勢たくさんいるんで、
別にキミみたいな人間は去ってもらって結構ですよ。
>>551 そういう貴方も奴隷なんでしょ?
あ、社蓄なので奴隷以下の家畜でしたか。
本当に優秀な人はこの業界は選びませんね。
7Kで先がないし。
>>541 それらの何か一つでもデメリットがあれば、徹底的に騒ぎ立てて、禁止規約を作って、下請にもう正常動作まで確認出来てるソースコード全部作り治させて、本人は仕事した気分になってるヤツいるよね。
デメリットとメリット天秤に掛ける責任追いたくないから、取り合えずなんでも感でも禁止、禁止、禁止イぃぃーー!
ヽ(`Д´)ノ 俺と言う大きな存在を納める器たる会社が無いからあえてニートを選んでんだよ!
↑
552
まあ、最近リスク管理とか言って、何でもかんでも指摘しておけばいいと思ってる、
自称PMが多いからねぇ。
>>553 社ゴキと言ってよ。
会社には不要だけど何処からともなく
沸いて出てくるし駆除もできない。
>>556 それって自分のためのリスク管理ね。
そして部下に責任を押し付ける。
>>559 社ゴキにも分かる日本語で書いておくれ。
>482
>商品検索画面で条件を入れると商品に一覧(グリッド形式)で出る
>画面をつくるとします
>商品ID 品名 規格 前回売上日 前回売上単価
>SELECT 商品.商品ID,商品.品名,商品.規格
> ,(SELECT TOP 1 日付 FROM 売上 WHERE 売上.商品ID=商品.商品ID ORDER BY 日付 DESC) AS 前回売上日
> ,(SELECT TOP 1 単価 FROM 売上 WHERE 売上.商品ID=商品.商品ID ORDER BY 日付 DESC) AS 前回売上単価
>FROM 商品
>WHERE 画面で入力された条件
まったく同じ結果をスマートに求めるなら、
SELECT 商品.商品ID, 商品.品名, 商品.規格,
F.日付 AS 前回売上日, F.単価 AS 前回売上単価
FROM 商品
OUTER APLLY(
SELECT TOP1 * FROM 売上 WHERE 売上.商品ID = 商品.商品ID ORDER BY 売上.日付 DESC
) AS F
WHERE
画面で入力された条件
OUTER APLLY
新餌さ頂ました〜
>>560 社ゴキだとちゃんとわかるから。
ゴキ以前の奴には無理かもしれんが (w
564 :
NAME IS NULL:2012/07/18(水) 20:39:34.37 ID:3EuiH4GF
× aplly
◯ apply
>>564 おっぱい に見えた・・・・溜まってるな・・漏れ・・
apply使うと、ほとんどカーソル使う必要がなくなるよね。
ブックオフで 7.0の本を見掛けたんだけど、今時7.0なんて使ってるとこはないよね?
ないことを証明するのはむずかしい
7.0の本が役に立つのかという話なら、お前がDBの基礎すらできてなくて、
その本が基礎から解説してるなら役に立つかもしれん
仰るとおりで w
すみません、質問というか知恵を貸していただきたく。
現在都合によりPostgreSQLからSQL Server R2へ移行をしようとしています。
それで移行が簡単な方法を探しています。
今検討している方法は、先にSQL Serverにテーブルを作成し、SQL Server Management Studioのインポート・エクスポート機能を使用して、
移行元のPostgreSQLには".Net Framework Data Provider for Odbc"のデータソースを使用して、データをインポートする。
このとき、1テーブルごとにクエリを発行して、SQL Serverにインポートしようとしています。
一度に一つのスキーマの情報をすべて移行したいのですが、方法がわからず困っています。
上記インポート・エクスポートの機能で、各テーブルのマッピングをして移行しようとも思ったのですが、
「変換元データおよび変換先データの列情報を取得できませんでした。」
のエラーが出て、マッピングの確認ができません。
エラーの内容から「Microsoft.SqlServer.Dts.DtsWizard」の部分でエラーが発生しているようで、
マッピングをきちんと指定できれば利用可能なだとは思うのですが、マッピングの指定の仕方がわからず・・・
マッピングの仕方もしくはもっと簡単なやり方があれば、教えてください。
よろしくお願いいたします。
>>570 ポストグレスのスキーマ移行できるのか?
>>571 ポスグレのスキーマ(現状publicのみですが)をSQL Serverの一つのデータベースとなるように考えています
ポスグレ側でテーブル定義のSQLとれないのか?
それを必要なら修正してSQLServerに空のテーブル作成
データは出来るならリンクテーブル張って引っ張るのが楽な気がする
DTSも解りにくかったがSSISになってさらに解りにくくなった気がするからなぁ
575 :
570:2012/08/01(水) 22:18:35.77 ID:???
返事が遅くなり、すみません。
携帯は規制で書き込めなかったorz
>>573-574 書き方が足りず、すみません。
テーブルに関しては、文字列や日付の型の関係もあり、事前に作成しています。
インポート機能利用時に、テーブルも一緒に作成できたのですが、データ型の
チェックをするので、先にテーブルを作るようにしました。
リンクテーブルに関しては、正直知らなかったので試してみたらうまくいきそうでした。
通常のinsert into select でなんとかなりそうです。
ありがとうございました。
ストアドの中で「引数が渡されたらそれを検索キーにして検索、引数が渡され
無かったら無条件検索」ってのをしたいだけなんですが
IF @PARAM = ''
@P = '%'
ELSE
@P = '@PARAM;
INSERT INTO @TMP
SELECT * FROM TBL WHERE VAL LIKE @P;
こんな感じでやっても全然取得出来ません。引数に空文字を渡すと全件取れる
のと、
SELECT * FROM TBL WHERE VAL LIKE '%' + @P + '%';
ってやると取り合えず期待とは違うけど取得出来るので考え方は間違ってない
と思うんですが、どこがおかしいのでしょうか?
すいません、あいまい検索がしたい訳ではなく、動的にSQLを作りたくなかった
ので '%' を使わないLIKE検索を試みました。
すいません、自己解決しました。
foo(@PARAMS NVARCHAR) って書くと1文字分しか確保してくれないようで。
数GBのデータベース環境を 2008R2→2012 してみたのですが
なんか尋常じゃないほど遅いですが。。
リソースモニタ見てると、ディスク活動「アクティブな時間の最高」が100%で張り付いてます。
CPU負荷はガラガラ。。
ハードはほぼ一緒なのですが、ディスクアクセスが10倍以上遅いような気がします。
SQL2012 試しておられる方いませんか?
>>579 インスタンス名を替えて同じハードに入れてテストしてみれば良いんじゃないですか?
2008, 2008R2, 2012 は2005のマイナーチェンジらしいですけど。
>>576 @PARAMがNULLで@PもNULLになってるってオチだとエスパー
>>578 ほんとに解決したんならいいけど
SQL Server 2008 R2 Standard 日本語版 10CAL付き
これを買おうと思っていますがPCがオフラインなんですけど
ライセンス認証は電話とかでできるんでしょうか?ネットに1度つながないとだめですか?
あと、壊れた時の予備として別PCにこれをインストールする場合は
同じ製品をもう1つ買う必要がありますか?10CALってことだから10台はOKってことですか?
現状は1台のPCにインストールされていて、そのPC内部のクライアント(1ユーザー)から接続してるだけです
>>582 Standardでなきゃ駄目な理由があるのかな?
Expressでも10Gbyteまで行けるし。
>>583 10GBだと足りないです
結構大きなデータで3年分とるんです
あと無料版は客への印象がよくないとか
PCオフラインでもOKですよ。特にアクチ等はないです。
あと、サーバライセンスとCALとごっちゃになってませんか?
MSのサイトとかに詳しく説明があるので一度みたほうがよいですよ。
ありがとうございます
認証ないなら特に気にせず使えますね
サーバーライセンスとCALは調べたので一応理解してるつもりです
サーバーライセンスが1台のPCに1個で無制限ユーザー
CALの方がユーザーにつき1個必要
ユーザーが多い企業とかは前者、
ユーザーが少ない個人は後者という感じですね
今回は1PC、1ユーザーなんで
>>584 無償版と言ってもMS純正でOSSのDBMSでは無いですけどね。
それから、待機系として通常は使用していないのであればライセンスは1つで済んだはずです。
588 :
529:2012/08/08(水) 13:48:48.66 ID:???
原因判明
2012では「SQL Server の優先度を上げる」にすると、劇遅になるぽい
チェック外したら速度が大幅うp
589 :
529:2012/08/08(水) 13:55:46.42 ID:???
一瞬変化があったけど、また遅くなった
「SQL Server の優先度を上げる」は無関係・・
いったい何が起きてるんだ
>>586 それはCPUライセンスとCALですよ。
サーバライセンスは、サーバ機にSQLServerをインストールできるライセンスです。
インスコされたSQLServerに接続して利用するためには、クライアントライセンスが必要です。
接続クライアントが少数の場合は、CALがお得。
多い場合は、CPUライセンスがお得と。
今回の場合、1台インスコ、1ユーザのみってことなので、1サーバライセンスと1CALが必要です。
>>587 待機系でもライセンス必要ですよ。
2台にインスコするなら、2サーバライセンス必要になります。
>>592 しったか乙
通常電源切ってるなら必要ないですよ
>>592 >待機系でもライセンス必要ですよ。
データベースミラーリングのミラー側はライセンス不要
昔から待機系はライセンス不要だったはずなんだが
気になったんで2008R2の使用許諾読んでみたが、表現が微妙だなぁ
一時的なサポートを行うため(略)パッシブ フェールオーバー インスタンスを同一数まで実行することが可能です
だってよ
常時電源を切ってる必要はなさそうだけど、ミラーリングは
パッシブ フェールオーバーとみなされるかどうかだな
>>589 ディスクIOで待ちになってるってんならメモリ割り当てが足りてない気がするが
ウイルス監視ソフトがデータファイルのIO監視してるとかいうオチじゃないだろうな
>>589 だから同じ鯖にインスタンス替えて入れろと。
違うPCじゃ比較にならん。
>>593 えええええ。そうなんですか?
ショックです。だまされました。
MSに聞いて必要だといわれたんですが・・・。
サーバ移行時等、一時的に複数台にインストールするのはOKですが、それ以外の場合は、ライセンス必要ですって。。。
あいつら買わせたいからってだましやがった。ひどすぎですね。
これは訴えてもいいかも。
そこの注意書き
フェールオーバー機能において、Passive 側のライセンスが不要になるのは、Passive 側を待機サーバーとしてのみ利用する場合に限られます
つまり、フェイルオーバー用に待機サーバとするときのみライセンス不要
>>582の説明が、予備マシンにインストールする とかだけだった場合
この要件に当てはまらないと判断された可能性はある
あと完全コールドスタンバイで、SQLServerのフェイルオーバー機能をつかわないなら
待機サーバにもライセンス必要と読めなくもない
>>600 待機サーバーが待機サーバーのみとして使われるならライセンス不要でしょう。
>>603 2008R2の説明
フェールオーバー クラスタリング、データベース ミラーリング、ログ配布のいずれかのテクノロジーを使用し、
SQL Server 2008 R2 のフェールオーバー機能を利用する場合、Passive 側 (待機サーバー) のライセンスを購入する必要はありません。
つまりフェールオーバー クラスタリング、データベース ミラーリング、ログ配布のどれかを使わないなら、待機サーバとしてでもライセンスが必要
と読めるわけだが
うむ
常識考えられない人たちって。。。
MSの罠にはまりすぎ
GPLトラップから比べると屁のような罠だが
608 :
NAME IS NULL:2012/08/08(水) 23:16:01.92 ID:xfql6zb5
ライセンスの誤購入はMSの隠れた収入源だからな。
意図的に多く買わなきゃいけないようにミスリードさせてる。
なんで営業に確認しないんだろう…
610 :
598:2012/08/09(木) 13:15:13.57 ID:???
>>609 営業に確認した結果ですよ。
今抗議中です。
来週回答がもらえる予定です。また報告します。
>>609 買う前に2chで確認しないのが悪いのだ。
>>610 意志がよく伝わってなかったんじゃないのか。
ケンカ腰にだけはなるなよ。
ケンカしたら、先々決して良い取引関係には
ならないからな。
待機サーバにライセンス要らないのはどっちかっていうとMSのサービスだからな
ちゃんとライセンス不要になる条件で見積もり頼まないと、ライセンスいるって言われるにきまってるだろ
日本とアメリカで同じ製品でもライセンスの解釈が違ったりするからなぁ。
>>614 サービスとか馬鹿ですか。
> ちゃんとライセンス不要になる条件
これがどういう条件なのかの話しだよ、ちょっとはスレの流れを読めよ。
>>616 >これがどういう条件なのかの話しだよ
そんな話は終わってて、それが
>>610に合致してるか、それを
営業にちゃんと伝えてるかどうかってのが
>>610以降の流れなんだが
他人を馬鹿にする前にちゃんと自分が流れ把握したらどうだ
>>617 > そんな話は終わってて
終わってないし。
終わってるというなら、ちゃんとした条件書いてみな。
自分でちゃんとライセンス条件を調べて1本だけ買えば済んだ話。
>>619 > 自分でちゃんとライセンス条件を調べて
ライセンス条項読んだこと無い奴がよく言う台詞だな。
>>614 と同じ匂いがする。
>>620 SQL Serverはライセンスが複雑怪奇なのでMSのサイトに
ライセンスについて解説している資料が沢山あるし
ライセンスFAQもあるし自分で調べりゃ分かるぞ。
>>621 通常電源オフのコールドスタンバイ機のライセンスについて、
どこにどう書いてあるか具体的に示してみて。
623 :
NAME IS NULL:2012/08/10(金) 16:35:40.16 ID:TxC9G7S+
Windowsは電源入れてなくてもインストールするにはライセンスが必要
SQLServerのミラーなどにライセンスが不要なのは特例措置にすぎない
>>622 キミは粘着性人格障害みたいだな。
キチガイの相手をする気はありませんw
>>624 「自分で調べりゃ分かるぞ」と大口叩いて、「具体的に書いてみ」と言われたら、人格攻撃 + 捨て台詞
さすがに、かっちょ悪いね。(w
SQL Serverって単独でCALいるの(Windowsのじゃなくて)?
2008R2までなら
プロセッサライセンスならCAL不要
サーバーライセンスならCAL必要
2012なら
コアベースライセンスならCAL不要
サーバー/CALモデルならCAL必要
へぇ〜サンクス
CALの考え方は、
SQLServerに接続するクライアント数(たとえば、APサーバ台数分?)って意味なのか、
それともユーザ全部なのか(Oracle式)。
Windowsの方は、IIS経由のアクセスは、CALに関係なかったはずだけど。
う〜ん、難しいね。
newid() を PrimaryKey にしてるテーブルがあるんだが
サーバーマシン入れ替でデータベース移動させたら
しばらくして insert で重複エラー出たよ
完全にユニークが保障されてるんじゃなかったっけ?
そうだったらよかったのにね
GUIDってそのマシンのMACアドレスから生成してた気がするんだが
DB中にMACアドレスもってるのかなぁ
かぶったGUIDってMACアドレスどうなってたんだろ
newid() でもぶつかるときはぶつかるから
bigint で identity のマイナス下限で始めれば
EFのスレが見当たらないのでここで質問させてください。
1つのEDMに異なるスキーマのテーブルを混在させることってできますか?
スレ違い。
書いてあることをいちいち書く男の人って・・・スルーしろよ。
スルーしてたら続くだろ。馬鹿?
637 :
NAME IS NULL:2012/08/21(火) 20:25:27.60 ID:viJcbdJr
2011年7月に立ったスレでなにを言ってんだお前。馬鹿?
いつ立ったか、なんて何も関係ないんだが。
話を戻すぞ
SQL SERVER2012のライセンスについてなんだが、コアライセンスとはクアッドコアの場合、4倍の値段がするということでいい
C#でソフトを作成してDBにSQLServer2008を使ってます。
マネージメントスタジオを開いている時だけSQLの結果がすぐ(1秒以内)帰ってきて
マネージメントスタジオを閉じるとSQLの結果に時間が掛かります(40秒前後)
こういう現象って初めてなんだけど何か知りませんか?
DBは1テーブルしかなくてデータは1億件程度で列数は6つくらいです
流してるSQLは日時で該当する1件を取得するってだけなのですが・・・
初回問い合わせのみ遅いんじゃなくて
問い合わせの度に待たされるの?
DB接続とオープンが遅いのか、クエリそのものが遅いのか切り分けを
SBS2003入れたばかりでSQL2000入れて再起動したサーバーのSQL2000 8.00.194 に
SP3a や4当ててる最中に、アップグレード処理のサーバーを初期化中ってところで
タイムアウトしてが充てられないんだけど
SP充てられないSQLサーバやAGENTも停止してるので何にも見当がつかないんだけどなにがいけないんだろうか?
エスパーするとインスタンス指定がまちがってる
エスパーサンクス
インスタンスは既定にチェックでそのまんまの空白だけど
なんか指定して試してみます。
処理1の中でテーブルA,B,Lを更新し、処理2の中でテーブルC,D,Lを更新してる。
どうしても必要があってbegin 〜 end transactionで囲ってるけど、テーブル
L(LOGテーブル)は別に双方から同時に書いても特に問題ないのでこいつだけ
トランザクション制御から外したいんですが可能ですか?
今の実装のままだと、処理1が実行中に処理2が走り始めても、処理1が終わるまで
待たされてしまいます。
>>648 分離レベル何でやってるとか、Lに主キーはあるのかとか、いろいろ考慮点があるが
特定のテーブルだけトランザクションから外すとかありえん
別の接続でトランザクション外でそのテーブルを更新しろ
よくわからんなら分離レベルをREAD UNCOMMITTEDにすればいいんじゃないかな
650 :
642:2012/08/29(水) 00:14:06.44 ID:???
初回のみではなく毎回遅いです
マネージメントスタジオを起動してDBに接続してからクエリを流すとすぐ結果が帰ってきます
DBへはアプリ起動時に接続しているので単純にクエリの結果が帰ってくるのが遅いです
宜しくお願いします!
実際にアプリで実行されてるSQLをサーバ側で確認いしてみろ
>>650 パラメータの型変換とかで、実行計画狂ってない?
ファイアウォール系のソフト全部切ってサーバと直結してためしてみたら?
SQLserverの認定資格取ろうと思うんだけど、すぐにでも2012版の試験が開始されるものですか?
今今はタイミング悪いですかね?
質問ですが、
複数のテーブルをjoin文で結合して、その列名を値として取得したいのですが
どうやったらいいでしょうか?
教えてください
>>655 もうちょっと待ってれば向こうで回答出たんだがな
SELECT * FROM INFORMATION_SCHEMA.COLUMNS
658 :
NAME IS NULL:2012/09/04(火) 13:14:44.58 ID:XlOCjIZI
Windows Server のスケジューラで SQL Server を監視し、
SQL Server がダウンしたら、Windows Serverを再起動したいのですが、
何かサンプルがないでしょうか。よろしくお願いします。
2008r2でsprename以外でカラム名変更ってできる?
drop table → create tableってのは無しでお願いします。
それが目的じゃなくて、最終目的のための手段なんでしょ
目的を書けばいいのにねえ
じゃ、ALTER TABLE で。
>>658 ダウンって SQL-Server の異常終了のこと?
だったら、サービスの設定で「コンピュータを再起動する」を指定しておけばいいと思う。
(サービスのプロパティで回復タブにある奴ね。)
663 :
658:2012/09/05(水) 00:28:10.65 ID:NdeyOU/w
>>622 どうもありがとうございます。
Windows Server + SQL-Serverを仮想サーバで使用しているのですが、
同居している他人の仮想サーバの負荷が異常にあがる影響を受けて
SQL-Serverが固まって応答がない状態になるみたいなのです。
そのような場合でもSQL-Serverが異常終了したという
イベントが拾えるでしょうか?
クラスタにしろよ。
666 :
NAME IS NULL:2012/09/05(水) 09:44:02.32 ID:ubycgf9V
>>659です
私自身、OracleやMysqlなどの経験もあるのですが、
とあることがきっかけで大学のSQL講習会に参加しています
そこで出題された課題で
1.テーブル作成
2.1で作成したテーブルのカラムAをカラムBと名称変更しなさい
というのがあり、ALTER TABLE使っても動かず、調べてみるとどうも
SQLServerではALTER TABLEでカラム名変更できないのでは?
と勝手に思っています。
sp_renameを使って提出したのですが違うと言われ、
DROP TABLE → CREATE TABLEも違うと言われ、
「・・・」
となっている状態です。
>>660 以上理由となっており、目的達成ではなく手段が問われているような感じです。
説明不足ですみませんでした。
>>661 できなかったです・・・。私の知識不足かもしれませんが・・・。
ちなみに、この課題は以前Oracleでやっていたそうで今回はじめてSQLServerで講習しているとの事です。
ひょっとしたらできないのかも・・・。
ALTER TABLEでカラム名の変更はできんだろ
新しいカラム追加して、(データコピーして)古いカラム消すぐらい
ツールの多くはそういう動作してたはず。テーブルのドロップ&作成と大差ない
つか大学のSQL講習って、そんなどうでもいいこと講習して何の役に立つんだろうな
sp_renameも内部的にはそういう動作だろうしな。
669 :
NAME IS NULL:2012/09/07(金) 18:46:57.19 ID:A526fkMU
SQL Server 2012を導入予定なんだが、2012はXPに対応していない?
これはサーバーへのインストールだけが対応していないだけで、ネットワークのXPマシンからデータベースを読み込む事は出来るの?
>>669 まずサーバの話なのかクライアントの話なのか
まあ、どっちにしても2012はXPはサポートしてないな
古いクライアントで新しいサーバへの接続はおそらくできるだろうけど保障外
ということで答えは 保障されない だ
671 :
NAME IS NULL:2012/09/07(金) 20:36:21.65 ID:A526fkMU
ふむ…ありがとう
マイクロソフトもケツの穴の小さいことをせずに
過去のMS製OS全てとiOS・アンドロ・Linuxまで対象にすりゃ
尊敬されるのになあ。
価格が 10倍になってもいいならやるけど、お前ちゃんと買ってくれるのか?
>>674 何でそんなに高くなるのさ。
Vista以前のOSでは動かないように仕掛けがあるんだろ。
それを外せばよいだけの話。
Vista以降のOSで持ってる機能を利用してたら、それ以前のOSでは動かない。
>>675 売りもんにするならテストというものが必要になるんだよ。
働いたことない奴には理解できないかもしれないが (w
そういうこという奴のアプリは、当然MS-DOSでも使えるんだよな?
679 :
NAME IS NULL:2012/09/08(土) 13:29:39.75 ID:D50/2ldH
>669
2012のクライアントツールはxpにインストール不可
但し、2008R2のSSMS(Express)やAccess2003のapdなどである程度操作できる
SSISなどがExpressの機能に制限されてしまうのが難点
別サーバーのSQL-S2000に SQL OLEDBでリンクサーバーを張ろうとしても
ターゲット側にNativeClientが入ってないと怒られるのでODBC経由になる
2000のEMからSSMSに移った身としては戸惑うことばかり
2012から2000にリンクサーバーで、2000の方にネイティブクライアントが無いって言われるのか?
ODBCでつながるんなら文句ないやろ
682 :
NAME IS NULL:2012/09/08(土) 16:06:38.96 ID:D50/2ldH
2000側にNativeClientが入ってないのがわかっているから
リンクサーバー設定時にわざわざOLE-DBを指定しているのに
ターゲット側にNativeClientが入ってないってエラーが出た
同じやり方で 2008R2から2000はリンクできたので
設定方法を間違ったのではないと思うんだが...
>>682 サーバーにはクライアント入れなくてもいいんだぜ?
ターゲットって2000だろ。ターゲットに接続行くのに、ターゲット側のクライアント関係ないと思うが
2012のネイティブクライアントは2000への接続保証してないからそのせいなんじゃないのか?
あとOLE-DBは非推奨になったはず。OLE-DBでリンクサーバ張れなくなってるのかも
検証したいが2012が無いんだよなぁ。2000はあるのにw
684 :
NAME IS NULL:2012/09/08(土) 17:09:27.71 ID:D50/2ldH
>2012のネイティブクライアントは2000への接続保証してないからそのせいなんじゃないのか?
たぶんそんなこったろうとは思う
>あとOLE-DBは非推奨になったはず。
でもリンクサーバー設定時の選択肢にはでてくるんだよなぁ
ODBCのオーバーヘッドを気にするようなアプリを組んでるわけじゃないけど
いまいちしっくりこないなぁ
>>663 それは多分異常終了とはみなされないから
タイムアウトとリトライ処理付のバッチを別途作ってやって、異常判断用のSQL定期的に流す形になる。
686 :
NAME IS NULL:2012/09/09(日) 21:45:21.05 ID:2/TvaXCv
With テーブル ()で作ったテーブルは、そのストアドプロシージャが続く範囲ではどこからでも参照できて
ストアドプロシージャが終わったら破棄されるのですか?
CTEか?それはテーブルは作られてない
有効なのはそのSQL文だけ
688 :
NAME IS NULL:2012/09/09(日) 22:42:50.42 ID:2/TvaXCv
ありがとうございます
ついでに質問ですが、Withの冒頭に;が必要な場合とそうでないときの違いはなんですか?
690 :
NAME IS NULL:2012/09/10(月) 08:11:05.72 ID:j8POAroQ
ありがとうございます
つまり頭で使わない限り、;が必要なんですね
頭に必要なんじゃなくて、(前の)文の最後に必要なんだぞ
将来的に全部の文に必要になる予定だからなるべく全部の文に付けとけ
体で使えばいいんだよ
TIMESTAMP列を持つテーブル同士で
insert into TAB1 select * from TAB2
とか出来ないんですが、列名を全部指定する以外の方法でエラーを回避する事は
出来ないでしょうか?
>>642 さんと似たような現象発生
VB.NET (framework 3.5)から、10万件中から20件くらい抜き出すSQL文があって
ManagementStudio では1秒以内でレスポンスあるのに
ExecuteReader すると3秒くらいかかる。
Parameters.Add 〜 に型を明示しても変化なし
どうなってるんだ?
1秒と40秒なら何か問題がありそうだけど
3秒程度じゃconnectionのオーバヘッドじゃないのかな?
696 :
694:2012/09/11(火) 19:48:11.34 ID:???
>>695 642さんとの違いは、元のレコード数だと思います。
で解決!
SELECT 〜 と普通に書いてある箇所に、TOP 値をダミーで付けたら劇早に
たとえば TOP 999999999 とか
サブクエリーとか入れ子にしてあるときは、入れ子の内側も外側も
すべてに TOP 〜 を入れる、と。
原因は分からないが、TOP を消すと元の劇遅に戻り、TOP を追加すると劇早になる
確実な再現性がありました。
ただ、TOP 書かなくても劇遅にならない SQL 文もいっぱいあって
どの条件の場合に「TOP がないと劇遅」になるのかは不明。。
いやだなぁ、この手の怪しい挙動
上のほう見たら
>>256-257 で似た感じの質問が出てました。
ちなみに自分の場合は SQL2008R2 でした。
ExecuteReaderはクライアントカーソル
マネージメントスタディオは非同期フェッチ
TOP 999999999 とかいれるぐらいならクエリヒント入れる方が良いと思うが
まず実行計画チェックしろよ
699 :
NAME IS NULL:2012/09/11(火) 22:13:35.35 ID:HJ9mXy9v
2012のブックスオンラインのオフラインインストールファイルって
どこにあるのか教えてください
前はBOL重宝したけど最近は msdn で事足りるからなぁ
>>696 統計情報を再作成するとまれによく治ることもある
sp_updatestats
703 :
NAME IS NULL:2012/09/13(木) 15:39:45.28 ID:HiVPSN8q
すみません。ちょと教えてください。
地方で三流SEやってます。SQL7の入ったPCがHDDぶっとんでしまいなんとか
必要なSQLのDATAだけ抜けました。これを別PC準備してSQL7環境に復元することは出来ますか?
使っていたソフトはPCA会計2000です。
c:\MSSQL7\ 以下のデータは抜けました。
別のWINDOWS2003serverは作りました。
sqj7.0をインストールしました。PCA会計2000をインストールしました。
初期データベースの状態で動作を確認しました。
data以下を上書きしました。起動できなくなりました。
こんな状態です。一度読めたら必要なデータを印刷し、新しい会計ソフトに乗り換えるつもりです。
だれかボスケテorz
アムロ上書きじゃなくてアタッチでなくて?
インデックス付きビューとやら試してみようと思ったけど
これ、ビューの中で OUTER JOIN してるとダメなんだな
使えん
>>704 YESです。
ファイルとして抜いただけなんで、SAのパスもわからないし、インストール作業したら
SQLデータも、会計ソフトのデータも上書きするしか手がないかなーと思いまして、、、
もうだめぽですかね。。。もしくは、PCAの新しいソフトを買って業者にやらせるかでしょうか。
アタッチしろよ
>>707 了解。やってみます。
あと、会計ユーザが登録されていませんってなるんですが、これはPCA会計側に
WINDOWSログインユーザが登録されてるってことですかね、、
SQL内になければ、レジストリかな、、iniファイルとかだといいんだけども。。
>>703 SQL2000だけど、SPのバージョンを合わせてからdata以下上書きでOKだったことがあったなあ
アタッチできないです。同梱されているEnterprise Managerが古いんでしょうか。。。
>>709 元のSPがなんだかわかりませんが、SP1とSP2やってみますorz
都度、セーフモードで起動しなきゃ上書きでいないので時間がかかる。。。。
>>710 SPと書きましたが、sqlservr.exeのファイルバージョンが一致してればいいと思いますが。
アタッチでキタ━━━━(゚∀゚)━━━━ !!!!
sp_attach_dbつかってアタッチする方法かいてあったのでやってまーす。
SQL7は上書きはだめっぽいです。私より全然専門の方っぽいblogで
上書きは2000から。7はできないって書いてました。
PCAのサポに電話しろよ
そも、そんな安直にデータ引っこ抜けるようじゃセキュリティ意味為さないだろ
三流の猿知恵でなんとか成ると思ってんじゃねーよ
まだ7使ってる奴いるのか
6.5使ってるところもあるよ。NT4で。
716 :
NAME IS NULL:2012/09/13(木) 23:13:56.11 ID:9JalXwmb
717 :
712:2012/09/14(金) 09:53:06.69 ID:???
>>713 サポート契約してないんだよ。でも、PCAには電話したけど販売店に電話しろで
販売店に電話したらサポ終了で、そもそもイレギュラーな作業過ぎて無理と。
一応最新のPCAに買換えで話は進めてるけど、10年分の財務データdだままにはできんよ。。
PCA会計はまだできてないけど、商魂は移動できた(`・ω・´)
つか、どうもWINDOWSのログイン認証でソフトが動いてるらしくて、ぶっとんだサーバーの
管理者がいなくてadministratorパスワードもわからんし、同じ環境にせんど、上書きでうごかないっぽい。
はやく営業さん見積りカモン!!ボスケテ!!
決算書とか仕訳帳とかの法定書類は決算期に紙で出してあるんだろうから
過年度の財務会計はトンでも、さほど被害ないでしょ
>>718 そういわれればそうだよね。今年度分だけでももどりゃいいか。
決算が3月末だから、たかが5か月分だもんな。
商塊は、復元できたし、新しいソフトに打ち込みやってもらうか。
あとはPCAの販売店にMDFとLDF渡して、あとよろしくでいいか。
そうだよね。俺なにがんばってんだろ。
720 :
719:2012/09/14(金) 11:23:22.40 ID:???
ワロタ なおったwwwww
アタッチとかいらんかったwwwwwワロスwww
721 :
NAME IS NULL:2012/09/14(金) 23:08:42.40 ID:KXjMKLaA
>>717 作り話してんじゃねーよ いっとくがな、PCAはサボ契約なんか二の次で対応してくれるわ
やましいことあるから質問に答えられなかっただけだろ 答えられない理由があったんだろ
お寒い野郎だぜ、ったく
おまえ、四十代なかばにもなって、そんなことしてて恥ずかしくねーのか? 恥ずかしくねーんだろな、だからぐだぐだ言い訳ばかり書き残してんだ
>>721 うん。やましいことがあったからサポしてもらえなかったんだよ。残念ながら。
箱も説明書も認証コードないんだよ。
「ソフトはなんですか?」 → 「PCA会計と商管って聞きましたが、、、」
「失礼ですが、、」 → 「委託された会社のものです」
「販売店は?」 → 「わかりません」
「製造番号は?」 → 「わかりません」
「・・・・・」 → 「・・・・・」
だよ。逆にどうサポートしろとw
HDDトんだPCの販売店は潰れてるし、ソフトの購入先はわからんし。たぶん導入担当が割れ厨。
会社側はPCAの2クラが100万円超のソフトだって理解してないし、会計と商管で300万だぞ?
予算もなしに即入れ替えてもらえるハズもない。
じゃぁ、とりあえず復元させて、時間稼いでいる間に、スタンドアロン版の最新に買い換える
からってことになっとんよ。
どこが壊れたPCからHDD抜き出して、中古のPC用意して、そこに復旧してくれる?
そんなもんサポートでやるはずがないだろ。じゃぁ、俺がやったろやないかいってことで。
バックアップは外部メディアに過去1度もやってなかったのよ。だから、ソフトインストールしても
データ復元できないし、もともと2003serverの管理者=PCA導入担当だったから、ログインIDもPASS
もわからん状態なわけ。わかってるのはクライアント側が、WINDOWS認証でつかってたっぽいってこと。
無事復元できたので、バックアップを取って、正規の代理店に新規ソフトに移行してもらいます。
上の作業と引き換えに、じぶんちのソフト1000万の契約もらったし、おいしいです(^q^)
スレ違いうぜー
724 :
NAME IS NULL:2012/09/15(土) 23:25:54.29 ID:qmfhKv6U
挙句の果てに犯罪自慢ですか 典型的な確信犯ですねw PCAよ、こいつが犯人だw
おとなしくお縄頂戴してくださいねー あ、ついでだからお客さんにもちょっとお話をお聞きしときましょーか
取調べには職業SEとか言わないでくださいねー Sかも知れませんがEじゃ、絶対ありませんからw 晒しage
726 :
NAME IS NULL:2012/09/18(火) 22:26:59.30 ID:QdPAiAG2
とある列の長さをLEN(テーブル.列)で求めつつ、
その長さをINSERT文の複数の箇所で使いたいんですが・・・・
INSERT
SELECT
列A,
列B,
LEN(列C),
SUBSTRING(列D, LEN(列C))
列E
FROM テーブル
こんな感じのSQLです
LEN(列C)を2回用いてるところにオーバーヘッドがありそうなんですが、どうすればいいんでしょうか
LEN(列C)を含んだビューでも作っとけば
気にしないのが一番。
今時のマシンなら全く完全に無視出来る程度の負荷。
副問い合わせの結果をINSERTの複数個所で使いたい、とかなら流石に無視しない
けど。
731 :
NAME IS NULL:2012/09/24(月) 10:54:52.17 ID:Dl453Jsn
SQL Server 2012 Expressもコネクション数に制限は無いだろうと思ってるんだけど、
その場合のWindows Server自体のCALってどうなるんだろ?
SQL Server 2012 StandardのCALを買えば、
Windows ServerのCALは使用しないでSQL Serverの接続はできるという認識なんだが。
Windows認証つかうならCALは必要だろう
どんな方法であっても認証するならWindows CALは必要。
SQL Server認証を利用したとしても、WindowsCALは必要ってこと?
ExpressじゃないSQL Serverを入れるとかなり高価なっちゃうのね
ありがとう 勉強になった
Windows Serverがあるのに
CALが無いって状況はあまりない気がするんだが...
んなことたぁないですよ。
CAL付きパケ買う状況の方が少ないと思いますけど。
CALゼロのサーバのパッケージなんて見たことないけど
CALのないサーバーを一体どうやって運用してるんだろうな
>>737 パッケージはおれも見たことないが、ボリュームライセンスだと普通 CAL なし。
Windows Server に CAL はなくても、クライアントが CAL 持ってれば別に問題ないと思うが。
それはCALが無いとは言わんのじゃないかね
ExpressなんだからクライアントOSに入れればOKだろ?
>>739 論点は「CAL のないサーバー」でしょ?
EULA的には、クライアントOSをDBサーバーとして使うのはアウト。
>>743 ネットワーク経由でサーバとして使うんじゃなくてローカルDBとして使えって建前だな
OSのEULAってバージョンやエディションやSPによって変わってるけど、一度ちゃんと読んでみ
ちなみに、今のEXPRESSってネットワーク接続できる状態でセットアップされてる?
f. デバイスの接続 お客様は、ファイル サービス、プリント サービス、インターネットの情報サービス、
インターネット接続共有サービスおよびテレフォニー サービスのみを利用するために、ライセンスを
取得したコンピューターにインストールされた本ソフトウェアに対し、最大 20 台の他のデバイスからの
接続を許可することができます。
ってやつだな。
なるほど、了解した。
747 :
NAME IS NULL:2012/10/05(金) 16:27:22.23 ID:OplmYB62
インデックスが無いテーブルで、IDENTITYを利用して一意性を保証する事って
可能なんでしょうか?
と言うのも、ほぼINSERTしかしないログの様なテーブルがあり、インデックスが無くても
IDENTITYが一意性を保てるならその方が良いかなと思いまして。
それともIDENTITYのテーブルには強制的にインデックスが貼られるんですかね?
IDENTITY に強制的にインデックスが貼られることはないが
それをキーにして検索するならインデックスはっとけ
一意制約って内部的にユニークインデックスで実現してる気がする
どっちにしても一意を保証するには、全行の値をチェックしないとダメだから
素直にインデックス張っとけ
SQL SERVER 2008 R2 64bit版の、STANDARD を、
WINDOWS 2008 SERVERにインストールした場合、
CALって、どうなるんでしょうか。
SQL SERVERにも専用CAL、WINDOWS 2008 SERVERにも専用CALがダブルで必要になるんでしょうか。
うん
「うん」って、
て、もうちょっとkwskお願いします
えと、たとえば、ユーザーが20人いたとして、
sql server 2008 r2にアクセスしてくるとします。
しかし同時にクライアントソフトでアクセスするのは5人くらいだとします。
sql server 2008 r2は、プロセッサライセンスではないので、
ユーザーごとにsql server 2008 r2のcalがいると思います。
でも、同時アクセスが5人だけだったら、追加calは要らないとかないんでしょうか。
ない
同時アクセスが10人だったら、どうなりますか。
windows server 2008と、
sql server 2008 r2 それぞれについて。
>>756 参考サイトをありがとうございます。
なるほど、sqlserver2008 r2にアクセスする可能性のある、pc あるいは ユーザーのうち、
少ないほうを選択すればいいのかなと思います。
しかし、calって購入すれば、そうれがどういうもので、(CDですか?)
そしてsql serverのどこにcalを登録すれば認証されるのでしょうか。
登録するところはない。紙を買うだけ。
登録もないんですか。
じゃあ、なんらかの認証コードとかもないわけですね。
つまり、MSから信頼されているんですね、われわれって。
ありがとうございます。紙を買って、ロッカーに保管しておきます。
windows server 2008のcal紙と、
sql server 2008 r2のcal紙とを、必要なデバイスあるいはユーザー数のうち、少なくなる方を選んで、
購入したいと思います。
calって、ややこしい。ms ってややこしい。
この程度でややこしいと感じるなら、SIベンダーに金払って丸投げしろ
社内で自前で、社員などがやっています?
764 :
NAME IS NULL:2012/11/09(金) 15:43:36.40 ID:dcYWs2B4
137 名前: NAME IS NULL [sage] 投稿日: 2011/11/23(水) 09:08:36.76 ID:???
2012プロセッササイセンスがソケット単位からコア単位課金になって、6コア以上のプロセッサを使う場合、実質値上げになるらしいな。
しかもワークグループやWEBなどのstandardより安価なエディションが全て廃止とか…
138 名前: NAME IS NULL [sage] 投稿日: 2011/11/23(水) 09:13:27.58 ID:???
ちなみに4コア未満のプロセッサでは4コアに価格が切り上げられるというボッタ価格の為、廃止されるワークグループの代わりにはならない。
371 名前: NAME IS NULL 投稿日: 2012/04/01(日) 23:04:20.96 ID:Raxe05Ul
SqlServer2012の大幅値上げワロタ。
8コアXeon一個だと
SQL Server 2008 Standard プロセッサライセンス 約100万
SQL Server 2012 Standard プロセッサライセンス 約270万
爆上w
627 名前: NAME IS NULL [sage] 投稿日: 2012/08/11(土) 06:32:36.43 ID:???
2008R2までなら
プロセッサライセンスならCAL不要
サーバーライセンスならCAL必要
2012なら
コアベースライセンスならCAL不要
サーバー/CALモデルならCAL必要
640 名前: NAME IS NULL [sage] 投稿日: 2012/08/25(土) 15:01:35.46 ID:???
>>639 > コアライセンスとはクアッドコアの場合、4倍の値段がするということでいい
1コアライセンスというものがあれば4倍でいいが、そもそも SQL-Server 2012 は
4コアからしか買えない。
あと AMD だと コア数× 0.75 とかいくつか条件あるので、営業に確認したほうがいい。
http://www.microsoft.com/ja-jp/sqlserver/2012/howtobuy/default.aspx # favicon のロゴが新しい奴になってる…
765 :
NAME IS NULL:2012/11/09(金) 15:47:25.33 ID:dcYWs2B4
要するに、ユーザーの視点では、SQL SERVER2012はMSが販売放棄をしてしまい、2008で終わりというこなのかw
他のDBに乗り換えろって事だな。
Windowsも先が見えてきた感が有るし、検討してもいいかも。
まあ今は企業サーバー部門の方が安定感あるな
その先はクラウドだが
768 :
NAME IS NULL:2012/11/12(月) 21:04:45.36 ID:ZQgVmRSp
LINUXで動作するSQL系SERVERソフトウェアに替えていこう。
MY SQLは、SQL文が通らないのが多いようなのでやめておこう。
何がいいだろう。
スレ違い。
MySQLおすすめ
嫌ならFirebird
express つかってりゃタダだろが
メモリ1Gって足かせが大きすぎる。
773 :
NAME IS NULL:2012/11/13(火) 13:42:27.51 ID:Yugh/EhK
POSTGRE?
ORACLEだと「update tempfile set column = 変数」ってできますが、
最近のSQL Serverではできますか
昔のSQL Serverで出来なかったかのような言い方だ
何をどうしたいのかわからんが、変数の使い方がわからんだけか?
SQL Server 2008で、ユニークなIDを採番するのに
insert into TABLE1
values (
(select max(id)+1 from TABLE1),
…
);
とやった後に、実際にいくつの番号が採番されたかを確実に知る方法はあり
ますか?
それとも、Oracleから遅れることxx年でようやくSequenceが実装された
2k12を使ったほうがいいでしょうか?
なんでわざわざ insert するのか
採番するなら update 1文でできるし
行にユニークな番号が必要なら identity
新規でレコードをinsertする際、ユニークなIDを採番するために(ry
ID列を定義しておいて、@@identityで。
>>776 今、手元に SQL Server の環境ないから試せないけど、
insert into TABLE1
output inserted.*
values (
(select max(id)+1 from TABLE1),
…
);
として、結果をアプリで受けるのではダメかな?
馬鹿には無理
declare @newid as int;
begin transaction;
select @newid=max(id)+1 from TABLE1;
insert into TABLE1 values (@newid);
commit transaction;
select @newid;
>>782 これってselectしてからinsertまでの間に別の誰かがinsertする可能性は無いの?
分離レベルによるんじゃね
分離レベルによってはFOR UPDATEつけなくても保証されることあるかもなのか
FOR UPDATEとか、デフォルトでSELECTがロック獲得しない某DB用
つか、SQL ServerとORACLEは別物だって考えろよ
SELECTしただけでロックされるのがデフォなDBなんてあんの?
屑過ぎて使い物にならんと思うけどwwwwwwww
>>783 ある。selectしたnewidと実際にinsertで使われたnewidがずれる可能性は否定
できない。つーか、>782 をやるくらいなら >780でいいじゃん。
諸事情あってidentityが使えないっつーなら採番テーブルを自前で用意するか、
許されるのなら2012に乗り換えてSequenceでも使うしかない。
2012マジ最高。FileTableはうまく使うと面白い事が出来そう。
SERIALIZABLEならずれないだろ、たぶん
SQLSERVER2008R2です。
あるテーブルの値を加工して別のテーブルへインサートする
ストアドをかきました。
intel i7 3GHzなマシンでは1時間程で完了する処理が
xeon 3GHzなマシンだと20時間くらいかかって速度が遅い
原因がわからず困っています。
利用状況モニタでみてみると、データベースIOが
極端に遅いです。
ディスクとメモリのベンチマークをとってみたところ、
それほど悪くない感じです。
どうも、インサートそのものが遅いようなのですが,同じデータベース
、同じストアドでここまで性能に差が出る理由がわからなくて
困っています。
何か、ここを見るべし的な情報やアドバイスがあれば
教えていただけないでしょうか?
IOが遅いんだからディスクが遅いんだろJK
ハード構成は?
Core i7 はSSDで
xeon は SASだと
エスパーしてみる
794 :
790:2012/11/24(土) 10:04:19.16 ID:???
>>792 ハード構成はざっくり下記のような構成です。
■■ 処理が速いマシン
Core i7 i7-2600 3.4GHz
メモリ 16GB デュアルチャネル
HDD SATA (7200回転) RAIDなし
■■ 処理が遅いマシン
Xeon E5-2609 2.4GHz
メモリ 12GB デュアルチャネル
HDD SAS (10000回転) RAID1
CrystalDiskMarkで HDD のベンチマークをとってみると、
Xeonマシンのほうがよい数値が出ます。
ハードの構成や、SQLサーバー側の設定、その他
確認すべきポイントやアドバイスがあればおねがいします。
OSは?
それだけ見ると、メモリー16GBいっぱいいっぱい使ってて Xeon マシンの
方はスワップしまくりとか。
Task マネージャーで SQL Server プロセスの CPU とスワップの状況確認
してみて。
RAID1ってだけで倍は遅くなる
安物 RAID しか使ったことない人はお呼びじゃないです。
798 :
790:2012/11/24(土) 11:27:30.74 ID:???
>>795 OSは下記の通りです。
■■ 処理が速いマシン
Windows 7
■■ 処理が遅いマシン
Windows Server 2008
タスクマネージャを見る限りCPUの利用率は低いです。
ストアドを実行してから処理中のメモリの空き容量も空いている状況ですが、
利用状況モニタで確認すると、やはり、データベースIOが
処理が遅い方のマシンは 0.1〜0.3 MB/秒 程度しか出ていません。
ハードウェアの問題でしょうか・・・
リソースモニタかパフォーマンスカウンタでディスクキューと書き込みデータ量みてみろ
800 :
790:2012/11/24(土) 19:04:01.41 ID:???
>>799 確認してみます。
このふたつの数値がよくない状況を示している場合、
ハードウェア側の問題と結論つくのでしょうか??
遅いマシンと速いマシンのスペック差で、ここまで極端に性能差が
でることは、ハードウェア以外にも何かまずい点が潜んでいる気が
しないでもないのですが・・
アンチウィルスソフトとか入れてない?
俺の経験した事例だと、ネットワーク使ってないのにTCP/IP有効にしたらごっつい速くなった。
名前付きパイプか共有メモリより、TCP/IPの方が早いってことか
ちょっと興味深い結果だな
804 :
NAME IS NULL:2012/11/26(月) 21:57:31.27 ID:332BCDpg
テーブルAとテーブルBがあります
テーブルAの主キーは5つあります
テーブルBの主キーはテーブルAの主キーのうち5つで、外部キーです。
いまテーブルAの主キーのうち1つの桁数を増やすことにしました(00→000等)。
TRANSACT-SQLでスクリプトを書くことになりました
最初にテーブルBからとりかかり、まずテーブルBの主キーと外部キー情報を保存しておきます。
次に新しいTABLEを主キーをつけずにCREATEしたあと(B'と呼びます)、テーブルBからINSERTしていき、
桁数を増やす必要がある列は、関数で加工してINSERTしています。
その後、Bから保存した主キーをB'に追加したあと、今までのBを「_B」とかいう名前にして保存しておき、
B'をBと名前変更します。
そしてAから取り掛かり、テーブルAの主キー情報を保存しておきます。
次に新しいTABLEを主キーをつけずにCREATEしたあと(A'と呼びます)、テーブルAからINSERTしていき、
桁数を増やす必要がある列は、関数で加工してINSERTしています。
その後、A保存した主キーをA'に追加したあと、今までのAを「_A」とかいう名前にして保存しておき、
A'をAと名前変更します。
最後に、旧B(今は_B)から保存した外部キーをBに追加し・・・・たいのですが、この時点で
「1750: 制約を作成できませんでした。以前のエラーを調べてください。」というエラーが出ます。
「以前のエラー」と言っても、ERROR_MESSAGE()が拾ったのはその文言だけで他にエラーはありません。
ですので、「どうしてエラーが出るのか?」というのがよく分かりませんです・・・。
ただそもそも外部キーである主キーの列を変更する手段がこの順番でいいのか、よく分かりませんです・・・。
>ただそもそも外部キーである主キーの列を変更する手段がこの順番でいいのか、よく分かりませんです・・・。
駄目じゃん
普通にON UPDATE CASCADEにしてUPDATEするだけで良いんじゃ?
ぜんりゃく
SQL Server 2012で、
TestテーブルにFurigana(ふりがな)列があり、ひらがな限定にしたいのでCHECK制約を付けようとしました。
以下の文字に限定したいのです。
ひらがな、長音記号「−」、濁点「゛」、全角空白、半角空白
単独の濁点を許可しているのは「う゛」があるからです。
ALTER TABLE dbo.Test WITH CHECK ADD
CONSTRAINT [CK_Test] CHECK ((NOT [Furigana] like N'%[^ぁ-んー゛ ]%'))
(パターンの濁点のあとには半角空白と全角空白が並んでいます)
Furigana列には、以下の照合順序を設定しています。
[Furigana] [nvarchar](50) COLLATE Japanese_XJIS_100_CS_AS_KS_WS NOT NULL
設定したところ、ひらがなだけじゃなくてカタカナ(全角・半角)も通ってしまうし長音記号は制約に引っかかるし
もうわけわかれんです。助けて呉な。
> ひらがな、長音記号「−」、濁点「゛」、全角空白、半角空白
ここが全角マイナスになっているのはたいぽです。ソースはちゃんと「ー」です。
>>807 N'%[^ぁ-んー゛ ]%'に照合順序の指定がないから、照合順序なしで比較されてると予想
そのLIKEに明示的にCOLLATE 指定してみたら?
参照先テーブル '%1!' に主キーと候補キーがありません。この参照先テーブルは、外部キー '%2!' の参照元列リストと一致しています。
これってどういう意味ですか?
バッチだったら引数ちゃうの?
WITH(NOLOCK) の利用って調べると結構危険だ危険だと言われますが、参照するだけの値を取得するのに
そんなに危険なものなんでしょうか?
例えば、VB.NETなどで入力フォームを作成し、ComboboxやListBoxの値(List)を取得するのに、WITH(NOLOCK)の使用は
止めた方が良いんでしょうか。
また、検索/抽出画面でたとえば100件のデータを抽出しViewへ表示させる際など、WITH(NOLOCK)の方が良さそうに思えますが危険なんでしょうか?
得られる情報に差異があっても構わないと言う前提なら問題無し?
>参照するだけの値を取得
取得中に他の誰かが書き換えてたら?
>>813 問題としてはその位なんでしょうか?
上書き優先で考えてますので、取得した時に書き換わっていない場合は、取得した人から見れば
無かった事になりますね。
ただ、実際の業務上ではそれで問題になる事はほぼ無いと考えています。
取得する内容としては、誰が何を何時にしたのか。というのを逐次登録しています。
基本は追加登録ですが、案件によっては前のデータの編集もあります。
同時に同じデータを修正する事はほぼ無い(0%では無いが)と考えています。
こういう場合でもやはり危険でしょうか。
また、取得後に書き換わっていたらという話から行くと、取得したらロックするという
悲観的ロックの方が良いという事なんでしょうか。
それはお前が決めることで
人に聞くようなことではない
816 :
812:2012/11/28(水) 14:51:57.90 ID:???
どの様な危険があるのかなーと…。
>>809 できましたできました。でーきーたー。
CHECK (([Furigana] not like N'%[^ぁ-んー゛ ]%' collate Japanese_BIN))
てなかんじにしました。
>>816 データベースってのは基本的にデータの整合性はDB側で保障されるんだが
ダーティリードされるとこれが保証できない
これ以上の事は利用者であるお前が考える話
>>816 「更新中に取得してしまったら?」という事だけです
取得対象のテーブルが絶対に追加、削除、変更されないなら問題ないです
こういったテーブルは一般的ではないです
頻度は別として、ほとんどのテーブルは変更される可能性を持っています
だからダーティーリードは極力使わない様にします
参照系で業務内容によっては使っても問題ないと思います
でもバッチ中の件数概算など場面は限られると思いますよ
820 :
812:2012/11/29(木) 11:20:08.56 ID:???
うーん、いまいち分からないです。。
最終的に作り手が決めるのはそうなので、それはちょっと置いておきます。
例えば、以下の項目を登録したいとします。
ある商品をいつ誰が何個発注したのかというデータ。
一日の締めまでは何回でも誰でも修正が可能で、かつ修正する人は担当者以外もあり得ます。
[登録データテーブル]
・日時、商品(A,B,C)、個数、担当者(担当1,担当2,担当3)
(カッコ内はデータ)
商品、担当者はマスターテーブルからデータから選択します。
登録画面を表示する際に、商品、担当者のデータをComboboxへ反映させようとした場合、
With(NOLOCK)を使う事に危険性有りですかね?
取得時にデータがあって、登録時にデータが無い/修正されているという事を懸念するとしたら、
登録が終わるまで各マスターをロックした方が良いって事なんでしょうか?
With(NOLOCK)を利用してもしなくても同じような気がしまして…。
飛行機の座席予約の様なデータの厳密性よりは、いつでも見れていつでも登録(後書き優先)できるという感じで良いのですが、
1つのレコードを取得して、変更して、登録という流れがあった場合、このレコードを取得するのに当たり
NOLOCKを使う場合に起こる不都合ってどんなのが想定できるんでしょうか。
ダーティーリードって、トランザクション中の値を取得するに当たり変更前のデータを取得してしまうって事ですよね?
実際の所で言えば、トランザクションが終了していても A取得→B取得→B登録→A登録 という事が起こり得るのだからあんまり関係無いような…。
※トランザクションが取得のみ、登録のみで分かれている場合
それとも、取得から登録までずっとロックしっぱなしの方が普通なのかな。
>>820 >取得時にデータがあって、登録時にデータが無い/修正されているという事を懸念するとしたら、
>登録が終わるまで各マスターをロックした方が良いって事なんでしょうか?
>With(NOLOCK)を利用してもしなくても同じような気がしまして…。
ここがよくわからないです。
データとマスタ間に参照整合性制約があればロックが必要ないのでは。
後書き優先なら楽観ロックいいような…
>>820 情報の鮮度が重要でない(追い求めても仕方ないもの)は
基本 NOLOCK でいいと思うよ
個人的には、デフォを NOLOCK にしてもらったほうが助かるくらい
823 :
812:2012/11/29(木) 13:24:27.50 ID:???
どうもです。
もしかしたら自分の質問は、楽観的ロック(ですらなく後上書き優先)で考えるなら、データを取得する時にはNOLOCKでも良いのではないか?
(同じ事かもしれませんが、NOLOCKが危険なのは悲観的ロックをしている場合のみでは無いか?)
という事になると思います。
2012のFileTableを使ってて、↓と全く同じ問題にぶつかってんだけど
ttp://okwave.jp/qa/q7755759.html ここで言うSQLサーバの権限設定ってどこの事?
IIS経由であってもsaでアクセスしてるのはローカル接続と同じなんで、
OSユーザがローカル接続時のAdministratorかIIS経由接続時のIUSRで挙動が
変わる???
>>820,823
データを取得するときにロックが必要ないと考えるならそれでいいが
テーブルヒントでどうこうするまえに、分離レベルで実現するべきだと思うが
>>821 ロックを無視されたら、更新中の制約が保証できないだろ
>>822 鮮度が問題なのじゃなくて、整合性が無いのが問題
そのためにスナップショットで処理する分離レベルが追加されてるんだが
ORACLEはそれがデフォだが、SQLServerだと互換性の問題もあってデフォは変えれんのじゃないかと
827 :
812:2012/11/29(木) 21:06:44.35 ID:???
>>826 おおう、マジかー。
データが重複したり、消えたりするのは困るな…。
こりゃ駄目か。
でもSELECTするのにロックが掛かるのって無駄な様な気がするんだよな…。
読取時に共有ロックかけて更新ロックをブロックする方が
行のバージョン管理するより省リソースというメーカーの判断
バージョン管理させたいならスナップショット分離つかって
829 :
NAME IS NULL:2012/11/30(金) 09:25:09.51 ID:GE+YDVxq
得意先一覧表という資料を出したとする。
資料には印刷時刻の記載があるが秒までは載ってないとする。
9:00:30 に大阪支店のA部長が一覧表を印刷した。
その一覧表を見て重要書類を顧客1に送ったのだが
数日後、書類が戻ってきてしまった。
本社に問い合わせるとB部長が9時すぎにマスターを変更したことが分かった。
システム部門に「排他管理できてねぇだろ、ゴラァ」って問い合わせら
いいえ「B部長の変更時刻は 9:00:35 でしたので、ぎりぎり前に印刷しちゃったのが悪いですね」と答えてきた。
実際の運用シーンは、こんな感じが大部分
帳票の印刷時の SELECT に LOCK かけようが、
部長の更新に LOCK かけようが、さほど意味はない。
レコードロックを気にしないといけないのは
在庫の取り合いとか、重要な金額情報の更新(与信管理)とか、バッチ処理とか
そのくらいしか思い浮かばない。
更新範囲の一貫性の保持のためには仕方ないんでない
831 :
NAME IS NULL:2012/11/30(金) 11:56:34.72 ID:gBuVJcQF
ADD PRIMARY KEYと
ADD CONSTRAINT PRIMARY KEY
ってどうちがうんですか
後者はキー名つけられるだけですか?
>>829 そのパターンでダーティーリードすると
部長の更新前の状態でも更新後の状態でもない状態の印刷物が出来上がる、ってことだぞ
>>831 上は列制約、下はテーブル制約だと思うが
列制約とテーブル制約の違いはイマイチ良くわからんな
SQL Server の中でバイナリ→BASE64のエンコード/デコードをしたいと思ってます。
そーいう系のキーワードで検索かけたら、FOR XML 時に BASE64 変換することができるオプションがあり
declare @value as binary(16);
SELECT @value as base64value
FOR XML RAW, BINARY BASE64
で、とりあえず BASE64 ぽい文字列が得られることが確認できましたが
最終的に XML型 でなく varchar() で文字列だけ取りたいのですが、XML型 の扱いがよく分かりません。
varchar() に cast するにはどうしたらいいのでしょうか。
リンクサーバー(ODBCの設定)について、ご存知の方がいらっしゃたら教えてください。
環境A:Windows7(32bit)+SQL Server2008R2(32bit) → PostgreSQL(32bit)
環境B:Windows2008 Server(64bit)+SQL Server2008R2(64bit) → PostgreSQL(32bit)
環境Aにおいて、PostgreSQLのODBCドライバをインストールして、システムDSNにODBCの設定を登録して
リンクサーバーの設定を行うと、PostgreSQLに接続できSQLの発行なども問題なくできました。
環境Bにおいて、環境Aと同じように32bitのPostgreSQLのODBCドライバをインストールして、システムDSNに
ODBCの設定を登録。リンクサーバーの設定を行うと、PostgreSQLに接続できません。
プロバイダには「Microsoft OLE DB Provider for ODBC」を指定しており、32bitと64bitの違いにより、
設定が認識できないのではないかと考えています。
環境Bで環境Aと同様に接続できるようにするためには、環境Bに64bit用のPostgreSQLのドライバを
インストールしてDSNをすれば接続が可能となるのでしょうか。
PostgreSQLが少し古いバージョンのため、64bitのドライバは最新のものになるため、互換性などに
問題がないか判断ができない状態です。
ご存知の方が、お知恵をお貸しください。よろしくお願いします。
>プロバイダには「Microsoft OLE DB Provider for ODBC」を指定しており、32bitと64bitの違いにより、
>設定が認識できないのではないかと考えています。
違うと思うよ
違くないと思うよ
試せばいいじゃん
OLEDBって、たしか非推奨かなんかになったはずだけど
839 :
NAME IS NULL:2012/12/07(金) 22:36:03.36 ID:taRReDCw
C#2.0 SQL Server2005で作ったシステムがあり、その中にストアトプロシージャを実行して帳票を出す機能があります。
ストアトプロシージャと帳票は1:1で対応しています。
各ストアトプロシージャの実行された結果(セレクト文)には、
@日付
A年度
B問い合わせコード
C拠点コード
が必ずありますが、ORDER BYされる条件は、各ストアトプロシージャによって違います。
列の数や定義も各ストアトプロシージャによってバラバラです。
今、このうち5本のストアトプロシージャのセレクト結果を、特定の条件下で、@ABCでソートして、まとめた上でPDFに出して欲しいと言われました。
各ストアトプロシージャは、@ABC以外の条件でORDER BYされてるのもあります。
対象の5本のストアトプロシージャに手を加えて、特定のフラグをパラメーターとして貰ったときに、
ORDER BYを@ABCに変えるようにSQL文に手を加えたいと思います。
しかし、最終的な5本の結果セット(DataTable)は、@ABCでORDER BYされていますが、
今度は、それを、プログラミングでまとめる方法が分かりません。
DataSet.Tables[0]〜DateSet.Tables[4]を、@ABCでソートして全く新しいDataTableに格納する必要があるかもしれませんが、
それって、C#でやるより、SQLでやったほうがいいでしょうか?
TRANSACT-SQLで、対象となる5本のストアトプロシージャを引数を与えて呼び出すSQLを書いて、
テンポラリーテーブルを作り、5本の結果をINSERTして、@ABCで最後にORDER BYして出力・・・って感じです。
>>840 >プログラミングでまとめる方法が分かりません
>全く新しいDataTableに格納する必要があるかもしれません
なにがしたいのか解らん
プログラムが解らんならC#のスレで聞け
新しいDataTableに格納したければ格納しろよ
>C#でやるより、SQLでやったほうがいいでしょうか
ケースバイケースとしか言いようがない
俺がこのケースで設計担当なら、最終的に欲しい結果を出力するストアド作るが
急にDBに繋がらなくなってサーバーを確認してみるとサービスが停止していたので
おかしいなと思ってログを確認してみたら↓のようなエラーがたくさん出てたのですが
このエラーってどういう意味なんでしょう
エラー: 17300
重大度: 16
状態: 1 (パラメーター: )。
形式設定中にエラーが発生したため、エラーは簡易モードで出力されます。トレース、ETW、通知などはスキップされます。
844 :
835:2012/12/09(日) 09:49:25.65 ID:???
>>836-839 アドバイスありがとうございます。
確かに試してみるしかない
ってことで、64bit版のドライバを入れて見たところ、無事(?)リンクサーバの
作成ができました。(データの確認とかはまだですが・・・)
お騒がせしてすみませんでした。またありがとうございました。
OLEDBが非推奨になったってことをこの件を調べているときに見た記憶は
あるのですが、OLEDB以外ではPostgreSQLへのリンクサーバーの接続が
作成できないので、使用しました。他に方法がないのかと。。。
>>843 ドヤ顔でググレカスしてるとこ横から悪いけど
そのメッセージ内容程度
>>842の本文に書いてあるけど
>>842 のどこに「メモリ」とか書いてあるんだろう…
まあ、アホはどこでもいるし、気にしてもしょうがないか (w
まあ、アホはどこでもいるし、気にしてもしょうがないか
まあ、アホはどこでもいるし、気にしてもしょうがないか
まあ、アホはどこでもいるし、気にしてもしょうがないか
まあ、アホはどこでもいるし、気にしてもしょうがないか
まあ、アホはどこでもいるし、気にしてもしょうがないか
まあ、アホはどこでもいるし、気にしてもしょうがないか
まあ、アホはどこでもいるし、気にしてもしょうがないか
まあ、アホはどこでもいるし、気にしてもしょうがないか
涙拭けよ (w
>>844 Windows2008ServerはODBC(DSN)接続マネージャに64bit版と32bit版が両方あるので使い分けに注意
Windows2008Serverっていうか、64ビットOSにはな
R2から64ビットしかないけど、2008には32ビット版もあるからな
スタートメニューから探して普通に出てくるのが 64bit 用
32bit 用ODBCマネージャはパスを指定して起動する必要がある
853 :
NAME IS NULL:2012/12/21(金) 21:01:58.05 ID:eyIUSHkG
二次元テーブルを返してくる関数があって、そのうちの片方の列に条件式に使いたい値が入っており、片方は関係ないです。
このままだとLIKEが使えないのですが、一つのクエリの中で、その二次元を一次元にサブクエリなどを使って変換する方法はないのでしょうか?
二次元テーブルって何?
855 :
NAME IS NULL:2012/12/22(土) 23:09:48.77 ID:pptBqmQL
列A │列B
という感じで返ってくるんです。
WHERE 何か IN 関数の戻り値
という感じで書くとコンパイルが通りません
テーブル型を返す関数ならいけるんじゃないかな?
結果セットを返すストアドプロシージャを関数と呼んでるなら
いったんtempテーブルにぶち込んでそれから処理する。
その関数にLIKE条件も渡すようにすればいいんじゃないかと思うが
とりあえずその関数のソースとやりたいSQL書け
858 :
853, 855:2012/12/23(日) 21:28:15.10 ID:QOaB8aTA
曖昧な質問ですいません。
やや複雑な結合や集計処理をしたあと、最後にSELECT A列, B列 FROM ***といった二列のSELECT結果を返す自作関数があります。
職場で既に用意されている関数です。
│.A.│.B.│
├─┼─┤
│○│■│
│△│★│
│@│●│
│□│▲│
こんな感じでA列とB列のテーブルが返ってきます。
ここでは質問のために4行にしてますが、実際は0行〜100行超が返ってくる可能性があります。
私がやりたいのは、SELECTするとき、WHERE A列 IN ('○', '△', '@', '□')というクエリを書くことです。
しかし、ご存知の通り、WHERE A列 IN 関数は落ちます。INは1列にしか使えないからです。
SQL Serverだったら、
WITH テンポラリーテーブル AS
(
SELECT A列
FROM 関数の戻り結果
)
とA列だけを抜き出したCTEを作ればよさそうですが、サブクエリなど使ってもっと上手い方法がないかな?と思い質問いたしました。
CTEで出来るなら、CTEの部分をそのままそのクエリに置き換えればできるだろ(再帰クエリじゃなければ)
やりたいことがよくわからん
関数からの戻りをさらにwhereで絞りたいのか、関数からの戻りで別なselect条件を絞りたいのか?
後者でinでA列を使いたいってなら、in(select A from 関数) で出来るんじゃないのか
Database1の完全バックアップファイルがあって、これを使って同じサーバ内
に違う名前 Database2で復元したいんですが、これって出来ませんでしたっけ?
復元先データベースを "Database2" としても、結局 "Database1.mdf" に上書
きしようとして失敗します。
本番用のデータベースをコピって同じサーバ内にテスト用作った時ってどう
やったか忘れた。。。
861 :
860:2012/12/25(火) 18:28:34.35 ID:???
>>860 SQL Server 2012です。もしかして2008から仕様が変わったんでしょうか?
862 :
NAME IS NULL:2012/12/25(火) 21:32:50.53 ID:RKEF6qyh
>>859 ありがとうございます。
やりたいことは後者でした。
なんかためしてみるとエラーが出たり出なかったりするんですが、とりあえずそんな形でできるなら
いろいろと試してみます
>>861 とりあえずリストアのSQLスクリプト晒せや
866 :
NAME IS NULL:2013/01/06(日) 16:15:26.37 ID:PFtSFSQD
犯罪者個人に対して告訴状を違法派遣・偽装請負・偽装出向・多重派遣の被害者が作成(刑事告訴は無料) or 司法書士が代筆(料金は5万円ぐらい)※コピペ歓迎
↓
告訴状を【検察の直告班】に郵便局の内容証明付で送付(疎明資料・証拠にはICレコーダー、スマホによる録音が適しています)
↓
審査 → 不受理 → 告訴状再提出または刑法 第193条で訴えを起こす
↓
受理 → 告訴事実を認め示談交渉(↓) →示談成立 → 法廷相場50〜100万円の示談金 ※示談拒否が良い
↓ ↓
事案化← 前科あり ←示談不成立(↓)→ 示談外交渉→ 犯罪者の年収半額×最大懲役年数の和解金支払い※推奨
↓ ↓
↓ 起訴 →公判 → 罰金刑=前科(起訴事実を認めてるため)→追討ち民事訴訟
↓
審査 → 起訴(強制捜査・留置場)→ 公判 → 懲役刑などの厳罰(反省が認められないため)→追討ち民事訴訟
↓
不起訴、起訴猶予
↓
検察審査会法第30条(検察審査会へ申し立て)→ 起訴 → 起訴後は同上
刑法 第193条(公務員職権濫用)で検察事務官を刑事告訴 → 同上
◎告訴→告訴受理→示談交渉→厳罰を求め示談不成立→示談外交渉→和解金支払い・和解契約(公正証書・即決和解で秘密保持契約)
◎偽装請負・出向・違法派遣事件では派遣・出向先両方の代表者、役員、現場責任者に告訴できます。
前科がついた犯罪者が法人の代表であれば公的な入札からの排除、取引先や顧客との契約解除など社会的制裁・批判に晒されることから辞職または解任が妥当、役員・社員であれば懲戒を想定。
◎事業者内部の加害関係者による刑事告発(刑事訴訟法239条1項)も可能です。
加害者本人、管理間接部門の社員が刑事告発に踏み切る場合も和解金による解決が妥当です。
注意:告訴が受理されない理由
●3年間(※)の時効が過ぎたもの ※違法派遣
●同一事実について過去に告訴取消しがあったもの
●関連する民事訴訟を有利に導く目的の場合
●証拠が希薄なもの ※被害者が契約時に違法派遣・偽装請負・多重派遣と知っていても刑事告訴は有効です。
SQL Server2012のシーケンスについてお知恵を貸してください。
現在 Java5 + JDBC + SQL Server2012 で開発をしています。
シーケンスは以下のHPの CREATE SEQUENCE とほぼ同じで、キャッシュなしで作成しています。
http://msdn.microsoft.com/ja-jp/library/hh272694(v=vs.103).aspx
現在、問題となっているのは、JavaからJDBC経由でシーケンス番号を取得すると、増分が余計に加算されて取得されることです。
上記HPのシーケンスで現在値10 とした場合に、シーケンス番号を「SELECT NEXT VALUE FOR dbo.Seq1 AS SEQ」のSQLで
取得する値と、"11"が返却されるのではなく、"12"が返却されます。
SQL Server Management Studio や JDBCを使用してDBアクセスするツール「SQL Devloper」などから、上述のSQLを実行すると、
Javaのように余分に加算されず、+1された値が取得できます。
jdbcの接続URLは、「jdbc:sqlserver://localhost:1433;DatabaseName=test;ProgramName=test;SelectMethod=cursor;」と
書いているくらいで、特に設定を追加はしていません。
同様の事象などで経験した方など、対処方法をご存じであれば教えてください。
よろしくお願いいたします。
JavaからどうやってSQL投げてるか解らんけど、
実際にサーバに発行されてるSQL調べてみるしかないんじゃない
勝手にプリペアされてたりするんじゃないかな
869 :
867:2013/01/08(火) 08:32:36.09 ID:???
>>868 Javaからの呼び出しでSpringなどのフレームワークは使用していません。
ソースは以下のような感じです。
Driver d = (Driver) Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance();
String connUrl = "jdbc:sqlserver://localhost:1433 〜以下略";
Connection con = d.connect(connUrl, new Properties());
String SQL = "SELECT NEXT VALUE FOR dbo.Seq1 AS SEQ";
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(SQL);
870 :
NAME IS NULL:2013/01/08(火) 11:49:05.18 ID:5ntVS72y
告訴の趣旨
被告訴人は、以下に該当すると考えるので、被告訴人の厳重な処罰を求めるため告訴します。
職務経歴書を提示した事前面接を実施 または 偽装請負 または 偽装出向
労働者派遣法第26条(契約の内容等)、職業安定法第44条(労働者供給)に違反
多重派遣・多重出向
労働基準法第6条(中間搾取の禁止)に違反
疎明資料
事前面接日時、場所、出席者、資料のコピー、音声記録
就業場所・就業期間・就業時間
指揮命令
指示を誰が行っているかの記録、音声記録
仕事で使う道具や、資材の負担(所有)のあり方
業務で使用しているパソコン・備品などの所有者
契約書
請負、雇用契約書、出向指示など書面のコピー
刑事告訴ガイダンス
★痴漢も民事でなく刑事事案ですが、裁判所が和解金を被害者に支払わせて解決するのが絶対的過半数です。和解で解決しない事案、つまり公訴までいって判例となる事例を探すほうが難しいことでしょう。
★録音は一方の当事者が取る限り合法です。※加害者に録音の同意を求める必要はありません。
★告訴状を検察に提出しても受理されなければ加害者側には知られることはありません。不受理の場合は何事も起きてないように粛々と振る舞ってください。
★告訴を取り下げるとき検察に提出した資料は全て返却されます。また検察があなたが提出した証拠をあなたの許可なく裁判の証拠として使用はできません。告訴を取り下げたのちの録音資料には当事者の立場が失われるため証拠能力はありません。
★和解時に告訴した事実は秘匿事項となります。犯罪者が秘密保持契約に違反した場合の損害賠償金は「即決和解」か「公正証書」で最低5000万円〜にしましょう。支払いを拒否すれば強制執行手続きを(裁判不要)してください。
★派遣会社や事業会社が同業者に貴方の情報をリークしたなら同業者(又は競合他社)に弱みを握られることになります。
余程信用のおける相手でなければ、リークはできないでしょう。信頼のおける方にしても、その方の口が軽ければ、いずれ事実は分かります。
★リークの情報を得た事業者のなかには、リークの事実を貴方に教えてくれる方がいるかもしれません。その際は損害賠償金で得たお金の3割程度を謝礼金として渡してください。
871 :
NAME IS NULL:2013/01/08(火) 13:43:25.84 ID:TRuIfa9w
872 :
NAME IS NULL:2013/01/14(月) 15:20:30.96 ID:2FyNVYyH
パワハラ犯罪にたいする刑事罰(※本投稿のコピペ歓迎です)
人事原則
1 現行法では、社員が仕事を怠けたり、能力不足、就業規則違反、目標を達成できなくても解雇をしたり叱責することは違法です。どんな駄目社員、嘘つき社員、怠け者も定年まで解雇が違法なのが現行の正社員制度です。
2 パワハラは社風にあわない社員、成績の振るわない社員を自主退職に追い込む言わば人事的措置として用いられることが多い。
※違法な解雇の和解金相場は、労働審判で3ヶ月、通常裁判で1年以上の報酬、さらに社員が和解を拒めば復職が可能です。弁護士への着手金は12〜15万円+20%の和解金、和解拒否なら20〜50万円程度。
人事部・ホットライン・御用組合へ直訴
メリット: 一時的緩和や人事異動
デメリット: 役員へ情報筒抜け、危険分子の烙印(情報漏洩がホットライン直訴者に多いのは人事部の常識)、パワハラ放置で自主退職に追い込まれる
民事訴訟・調停(労働審判)
メリット: 損害賠償
デメリット: 裁判費用、解雇措置、民事不介入で刑事事案化を阻止、長期係争、パワハラ上司の継続雇用
刑事告訴
メリット: 1パワハラ上司の解雇・懲戒、または2多額の和解金、1と2どちらでも被害者の雇用は維持
デメリット: 人事異動(出世コースから外れる)
◎録音は一方の当事者が取る限り合法です。※加害者に録音の同意を求める必要はありません。
◎告訴受理後の和解金は加害者の資産・収入に応じて変えてください。犯罪者の昨年の年収の半額程度×最大懲役年数が妥当です。
◎パワハラの被害についての告訴は1侮辱罪2脅迫罪3強要罪4威力業務妨害罪5傷害罪の順序で行ってください。警察・検察の協力(犯罪者の自宅・職場の強制捜査、留置所勾留)により罪の立証が楽になります。
◎刑事告訴した社員を解雇したり処遇面で著しい差別を行うことはないでしょうが、出世や管理職以上の昇進の可能性はあきらめるべきでしょう。
◎刑事告訴は民事訴訟と違って裁判による被害者への2次被害にありません。検察庁が被害者に代わって訴えをおこすので、無料で、時間と手間も告訴状をかくことと音声録音を残すだけです。
◎和解契約(公正証書・即決和解)では告訴した事実は秘匿事項となります。犯罪者が秘密保持契約を違反した場合の損害賠償金は、最低5000万円〜にしましょう。
2008R2 のManagement Studio にてテーブルの編集や上位n行の選択が
異常に遅いんですが、どのなたか解決策をご存じでしょうか?
再インストールやSP 1の適用は試していますし、
同じPCで 2012 や VisualStudio 2010から同じ接続先で同じ事をやっても
ストレス無く処理されます。
一応、SP2もでてるでー。
2012のを入れてるなら、2008のをわざわざ使う必要もなくね?と思うが。
俺がエスパーしてやる
フォントの変更とディスプレイドライバーの更新するんだ
876 :
NAME IS NULL:2013/02/01(金) 15:11:11.32 ID:3Q5eJpud
最適化したらいいんじゃないの
一からセットアップして、初めてクライアントからツツけた記念パピコ
878 :
873:2013/02/04(月) 14:15:56.69 ID:???
>>874 2008R2 SP1が指定されていますので、それでやりたいのです。
解決できなかったら特例をお願いして2012にします。
>>875 ちょっと心あたりがありますので試してみます。
スレ違いなら申し訳ございません。
MS SQLの入門というか、基本を理解したいのですが、どのような方法が
あるかということについて、ご意見を頂戴したいです。
インフラ系のSEと理解していただけるのが一番近いのですが、ヘルプデスク的
なことから、ADやファイルサーバ、グループウェアなどの構築から運用まで一通り
やってきました。まだまだ、エンジニアとしては未熟といったところです。
業務で、SQLサーバに関する仕事を担当することになり、そもそもSQLって何か?
ということから、いろいろと調べています。(DBの中身をいじったり、開発というよりは
セットアップと普段の運用、バックアップとリカバリという業務がメインです。その後、
より中身を触るような業務に携わるかもしれません)
・MS SQLのライセンスは持っています。
・仮想環境を含め、サーバの準備もあります。クライアントも同様です。
このような状態で、SQLサーバをセットアップして、簡単なDBを構築、それを
バックアップしたり、別のサーバにリカバリしたりということを、まずはしてみたい
のですが、DBがバックアップできた、復元できたというのをどうするのがよいかと。
たとえばファイルサーバですと、OSをインストール後、共有設定やアクセス権の設定
をし、適当なデータを入れて、バックアップ。それを、いくつかの方法で復元してみて
バックアップ前のファイルがあるから、OKといった感じだと思うのですが、これと
同じようなことを、SQLサーバでやってみたいと考えています。
長文で申し訳ありませんが、ご意見を頂けると助かります。
>>879 バックアップしてもどして、元のデータあるか確認するだけだろ
何が効きたいか解らんが、やれば、としか言えん
環境構築まじめにやるなら本買うなり講習うけるなりしてちゃんと勉強しろ
>>879 SQL Server 自習書 で検索してはどうですか?
大体の内容があると思いますよ
882 :
NAME IS NULL:2013/02/08(金) 12:45:22.14 ID:/B/GIlXb
>>879 実際やってみたらいいんじゃないの
そんなに奥が深いものじゃない
DB舐めすぎ
>>881 ありがとうございます。いただいた情報でしらべてみます。
>>882 ありがとうございます。
やってみることはできると思うんですが、DBが機能しているというのが
今一つイメージがわかないので、簡単な実例のようなものがあればと
思い書き込みました。
ちょっと違うと思うのですが、たとえばWSUSもSQLが動いていますが、
無料版のSQLのため、特に意識せず構築・設定して、使っています。
これを、DBの側面から見て、SQLがちゃんと動いていて、それをバック
アップしたり、リストアしたり、あるいはDBの基本的な操作を・・・という
のを学びつつ、ちゃんと稼働しているからWSUSとして機能しているのが
確認できるといったイメージです。
言葉の選び方が悪く、うまく伝わらないかもしれません。
インストールして、仮のデータを入れて、コマンドから確認というレベルでも
よいかと思うのですが、そもそもDBについて無知のため、ある程度形に
なった方が理解しやすいかなと思った次第です。
885 :
879:2013/02/08(金) 14:10:04.63 ID:???
とりあえず、もう少しネットの情報と書籍を読んでみることにします。
ありがとうございました。
DBなんてバックエンドの機能なんだから見えなくて当たり前
動いてるの知りたければ簡単でもいいからフロントエンド作ってためせ
っていうかちゃんとした講習うけろ。それが一番だ
>>883 > DBの中身をいじったり、開発というよりはセットアップと普段の運用、
> バックアップとリカバリという業務がメインです
SQL2008で作ったmdf類を試験的に2012へ移動させました
(デタッチ→ファイルコピー→アタッチ)
特に問題なく出来たのですが、戻そうと思い、2012でデタッチして逆の手順をしたら
SQL2008にアタッチする時点で
>データベース 'XXXX' のバージョンは 706 なので、開けません。
>このサーバーではバージョン 663 以前がサポートされます。
>このダウングレード パスはサポートされません。
>新しいデータベース 'XXXX' を開けませんでした。CREATE DATABASE は中止されます。 (Microsoft SQL Server、エラー: 948)
データベースの互換性レベルは SQL Server 2008 (100) なままなのですが、
これはいったん 2012 でアタッチしちゃったら 2008へは戻せないということなのでしょうか?
(データベースのバックアップ→復元でやらないといけない??)
もう戻せない太陽の牙ダグラム
バックアップも下位互換性は無いんじゃなかったけ?
ビルドの違いだけでうんたらかんたら
SQL文で出力すれ
>>888 こういう時こそMSのサポートに投げてみるべきだな。
高い金を払っているメリットを存分に生かしてくれ。
894 :
888:2013/02/13(水) 09:55:51.68 ID:???
バックアップ→復元でもダメでした。
とりあえず戻すときはデータベースコピーウィザードで切り抜けます。
>>892 CREATE DATABASE のオプションか何かで
強制アタッチする手段があるのかと思い調べましたが見つからず・・・
>>893 この程度のことでインシデント使うの勿体ないので仕様と諦めます。。
895 :
NAME IS NULL:2013/02/22(金) 21:12:05.82 ID:GwvJx06p
すみません、質問よろしいでしょうか?
私、DBは完全に素人なんですが、会社のツールとしてSQLServer2008R2にて簡単なDBをつくっております。
本日、バカなことにあるテーブルのレコードを全削除してしまい、何とか復元できないものかと思っております。
RDBMSは SQLServer2008R2 EXPRESS
ツールは 2008R2ManagementStudio EXPRESS です。
データベースの完全バックアップした.bakファイルは有ります。
データベースを構築する.sqlファイルもあります。
別にサーバーを立てられるような端末もなく(XP32bitのみ)途方に暮れております。
.bakファイルから、あるテーブルのみ復元する方法を、どなたかご存じないでしょうか?
よろしくお願い致します。
いったん別DBに復元してそこからそのテーブルだけ抜き出せば?
897 :
NAME IS NULL:2013/02/23(土) 10:44:43.25 ID:dBI8Q44e
>>896 そうなんですよね。
.sqlファイルから別名」DBを作って、そこに.bakファイルで復元しようとすると
「これは別DB用だから駄目!」とメッセージが出ます。。
なにか間違っているのでしょうか?
SQLサーバーのエスプレッソ版を基幹業務のバックエンドで使用している
例ってありますか?
現在進めてる仕事でお客さんにSQLサーバーはそちらで用意して下さいっ
てゆったらそんな想定はしていないとかごねられてこっちでSQLサーバー
を用意する事になったんですが大したサイズが必要なわけでもないので数G
程度のデータベースで十分なので無償版で問題ないと思ってるんですがお客
さんがそんな無償で提供されてるようなソフトで本当に問題が起きないのか
と懐疑的になっています。
Java版もありますか?
えすぷれっそ・・・
えくすぷれす・・・
>>897 DB作ってから復元するんじゃなくて、別DBとして復元するんだぞ
>>898 自分らは金を出さないのに
有償版を入れろという脅迫めいたことを
抜かす客なんぞ、この先もいろいろ難癖付けて
お前らをただ働きさせる気満々だろ
誠実な取引が期待できないのだから
今のうちに契約破棄しちまえよ
>>897 sqlでガワなんかつくらなくても、直接DB名を変えて復元(複製)できるぞ。
>>903 >自分らは金を出さないのに
>有償版を入れろという脅迫めいたことを
>抜かす客なんぞ、この先もいろいろ難癖付けて
状況よくわからんけど、契約してからベンダーに
「SQLサーバーはそちらで用意して下さい」とか
言われたら、俺でもごねると思う。
ていうか<、見積もり条件書に書くだろ、普通。
906 :
905:2013/02/23(土) 20:28:04.41 ID:???
契約前なら、
>>903 の言うようにちょっと考えた方がいいかも。
無償版が不安なだけなら業務用パッケージソフトでも
EXPRESS使ってること示せばいい
908 :
NAME IS NULL:2013/02/24(日) 09:50:25.83 ID:FdOMVLXe
>>902 >>904 あああああああああああああああああああああああああ!!!
教えてください!!なんでもします!
909 :
908:2013/02/24(日) 09:57:31.39 ID:FdOMVLXe
910 :
908:2013/02/25(月) 18:18:51.04 ID:???
皆様ありがとうございました。
教えていただいた方法で、本日無事に復旧することができました。
このご恩は忘れません。
insert into 〜
select 〜
from 〜
って風で、テーブル→テーブルにデータコピーするとき
普通はトランザクションがかかると思いますが
これをトランザクションなし(無視)で実行することはできないのでしょうか。
途中で失敗したとき、半端な状態になっても構いません。
1億レコードくらいコピーしたいんですが
ログファイル(Temp?)が凄いことになりそうで。
補足
from 〜 with (nolock) で、元テーブルのレコードロックは防止します。
コピー先のトランザクション処理を行わないようにしたいのです。
ロックが問題ならREAD UNCOMMITTED分離レベル
ログの量が問題なら一括ログ復旧モデル
ありがとうございます。
復旧モデル=単純にしてあっても
1億レコードのINSERTが走るとき、コミットされるまではログファイルが膨れていくじゃないですか
コミットしたら即座に未使用領域に変わりますけど。
一時的にせよ、ログファイルをドカーンと増やしたくないのです。
最小ログ操作の発生条件がめちゃくちゃ厳しいのでなかなか難しいね。
一括ログ復旧モードで
レプリケートされていない。
TABLCOKされている。
基本的にデータが空でなくてはならない。(ケースにより諸条件あり)
試しにやってみたら、ログファイルが急速む成長中
一晩くらいかかるのかなぁ
でかいデータはBCPとかでインポートする手段を用意しておかないと
インデックスのREORGANIZEやREBUILDなんかでもログが大爆発するね。
919 :
NAME IS NULL:2013/03/07(木) 00:54:50.12 ID:7eVduAiz
もともとユニシスとかが銀行パッケージつくってたべ
921 :
NAME IS NULL:2013/03/24(日) 12:02:21.55 ID:EFgh/klN
※本投稿の拡散歓迎です。
派遣労働者のパワハラ・セクハラ対応策について
下請け労働者、業務委託、派遣労働者は契約期間が短期という制約があり、契約更新拒否をちらつかせた不当な労働強要の実態があります。
雇用形態における壁・差別は法律に直接的規程はなくとも認められているわけではありません。
「正社員の有期雇用労働者に対する優先的地位乱用」による「侮辱罪」、「脅迫罪」、「強要罪」、「傷害罪」、条例違反で刑事告訴できるが、
本稿では刑法ではなく労基法関連の対策に焦点をあてます。
労働基準法第5条(強制労働の禁止)(1年以上10年以下の懲役又は20万円以上300万円以下の罰金)
■精神の自由を不当に拘束する手段によつて、労働者の意思に反して労働を強制してはならない。
例:正規労働者(同僚)による残業の強制。仕事の期限が遅滞した際に「繰り返し」残業を示唆する。
例:派遣の仕事の回し方の裁量を正社員が決めるなどと示唆する。
例:飲み会、昼食、たばこの同伴を強要する。
労働基準法3条 (六箇月以下の懲役又は三十万円以下の罰金)
■社会的身分を理由として労働条件について差別的取扱をしてはならない。
例:社内制度に明示されていない指揮命令系統が正社員と派遣社員に存在する。
派遣社員も正社員と同様に社内制度に準じるという契約上、業務で平等に取り扱う必要がある。
例:社内制度上の上司でもない正社員が命令をしたり、仕事上の指導権・裁量・許可権限をもつこと
派遣契約の内容にそうした区別を制度化するような客観的な証拠がなければ派遣社員側に有利といえる。
例:派遣社員に業務上における裁量を一切与えず、非管理職の正社員が許可を与える
労基法3、5条については、経営責任も問えますので、刑事告訴できる相手は以下のとおり。
派遣先 当該正社員
派遣先 指揮命令者
派遣元・派遣先 代表取締役
刑事告訴(告発)の行い方ですが、内容証明郵便で告訴状(告発状)を地方検察の直告班に郵送してください。
922 :
NAME IS NULL:2013/03/26(火) 09:58:28.38 ID:JTcw6Geq
お知らせ
市原警察署の生活安全課の帰化人創価警官の指導の元、
入学式から2週間ほど、在日の創価学会員を主体とした自称防犯パトロールが、
2週間ほど行われることになりました
生活安全課の指導であることと、パトロールであることは、
絶対に公言してはいけないとの指導も、帰化人創価警官より出ています
期間中は2人組の在日の創価学会員が、頻繁に創価批判者の自宅周辺を、
うろつき回ると思われます
日本人の方は、充分に注意してください
犯罪者も大変だな
924 :
NAME IS NULL:2013/04/03(水) 16:24:33.11 ID:PB7qXEq2
>>918 確かに
まえにこの板で教えてもらった激安中古CADソフトショップかなり使えるね
中古ソフトがかなりお手頃で助かる
926 :
NAME IS NULL:2013/04/10(水) 10:30:43.78 ID:tw59sqc9
非常に初歩的な質問ですいません。
sql server 2008 expressがインストールされている環境に
sql server 2008 r2 expressをインストールした場合
元々インストールされていたsql server 2008 expressのデータは
r2用に自動的に上書き(アップデート?)される認識で正しいですか?
知識の足りてない素人ですいませんがどなたか教えて下さい。
>>926 データが何を指すのかわからないけれどインストール方法によるでしょ
アップグレードすればr2になるしインスタンスを分ければ2008のまま残る
日本人の払った貴重な血税から
ゴキブリ在日朝鮮人に生活保護が支払われている
ゴキブリ在日朝鮮人の一家族で年間600万円である
ゴキブリ在日朝鮮人の2人に1人は生活保護だ
これより安い給料で働いている日本人が
少ない給料から支払った税金が
ゴキブリ在日朝鮮人の生活保護になっている
ゴキブリ在日朝鮮人は生活保護をもらって
毎日パチンコをして遊んで暮らしてる
ゴキブリ在日朝鮮人の犯罪者も非常に多い
ヤクザの2人に1人はゴキブリ在日朝鮮人だ
日本社会の寄生虫 ゴキブリ在日朝鮮人
日本から出て行け! ゴキブリ在日朝鮮人
SQL ServerってORACLEみたいにPACKAGEが無いけど、
どうやってストアド書くの?
別のストアドにするとexecするのがめんどいし、
関数を分けづらいのでコピペの荒らしになると思うんだけど
930 :
NAME IS NULL:2013/05/15(水) 14:51:42.48 ID:NCOySss5
SQLServerのコンテキスト接続を行った場合Select文のみでUpdate文は使えないのでしょうか?
コンテキスト接続=> context connection=true
931 :
NAME IS NULL:2013/05/21(火) 11:27:23.81 ID:6VYvZneK
只今勉強中の初心者なのです。
サンプルDBをインストールしたく、
いろいろサイトを調べたのですが、分かりません。
ご教示お願いします。
OS:XP pro SP3
DB:Microsoft SQL Server2008 R2 RTM - Express with Advanced Services
SQL2008.All_Product_Samples_Without_DBs.x86は
インストールしましたが、
AdventureWorksLT2008R2_Databaseの
インストール方法が分かりません。
インストーラーも無く、
mdf、LDFファイルがあるだけです。
どうすればよいのでしょうか?
933 :
NAME IS NULL:2013/05/22(水) 08:45:26.06 ID:nWU1zoDt
>>932 遅くなりましたが、出来ました。
ありがとうございました。
インストーラーは無いのですね…
SQL SERVER 2008 R2の無償版なんですが、メモリが1Gに制限されています。
これって、インスタンス毎に1Gってことでしょうか。
それとも、SQL SERVERで、1Gってことでしょうか。
その通り
>>935 ありがとうございます
データベースを分けて、インスタンスに振り分ける運用を考えます
いや、SQLServer全体で1Gってこと。
マシンを分けるんだろ
インスタンスごとだろ。
express ってマルチインスタンス可能だったっけ
可能ならインスタンスごとだよ
エクスプレス版はマルチインタンス不可だろ
2008R2のEXPRESSだがインストールは出来た
えっ!
SQL SERVER 全体で、1Gなんですか。
それとも、最初に言っていたとおり、インスタンスごとに1Gなんですか。
大きな違いです・・・
試せばいいだろハゲ
禿げてないもん
禿げてるオレに謝れ
「ああ!きのどくに!!」
7.0から新規システム組み替えで2012にしようと思いますが、数え方がわかりません。
一体価格はいくらになるのか?
7.0の見積もりが出てきましたが鯖1 端末2で、29万2200円。
新規予定も同台数で鯖のコアは2 端末のコアは1と2、合計5コアです。
DBサイズ10GB以下で、しょぼいことやってるだけなら
無料版でいいだろ
30GBくらいです
サーバーCALのパッケージがヨドバシ.com で40万くらいで売ってる
40万ですか。10年の間に高くなってしまったorz
1433/tcp を直接インターネット側にポート開放して使おうかと検討してますが
SQL Server にセキュリティホールがない前提にたてば
パスの総当たり食らわない限り、特に問題ないですか?
ポート番号くらい変えといたら?
D(D)oSで終了
そのSQLSERVERにつなぎに来る相手が固定IPなら
ルーターでフィルターしとけばいいね
958 :
NAME IS NULL:2013/06/22(土) 15:07:20.81 ID:dUXTmCsd
ストアドプロシジャをさっき作って、マネージメントスタジオでようやく動作させたら、
処理が20分以上たっても終わらない。
nullを許容した3列でテーブルを直積で結合する処理で重たくなっているんだろうか。
(直積結果のうち不要なものを排除するそのwhere句では、is nullで回避している)
inner join を使った方が結合は早くなるかな
テーブルはそれぞれ20万行を超えている。
sql処理って丸一日かけて行うことも普通にあるんでしょうか
もうちょっと待ってみます。
実行計画見ろ。
Oracleの実行計画はどこが駄目なのか直感的に分かるんだけど、MSSQLの実行計画は
パッと見でどこがネックなのかいまいち分かり辛い。
あと、indexの1000byte制限ヤメテ。
>>959 実行計画ってどうやってみられるんですか。
sqlサーバがどうやって、そのでかいストアドプロシジャを分解して、崩していくかわかるということなんでしょうか。
どのブロックで処理が重たいかも把握できるのなら素晴らしい。
そこがわかれば、あきらめもつくし、改善できるかもしれないです。
>>960 インデックスの1000バイト制限って、
なにか知らないですけど、処理中に使う一時インデックスサイズのことでしょうか。
1000バイトって小さいですよね。
有償版にして、メモリとcpuを積めば、早くなるならそうしたいです。
でも、設計が間違っているなら直したい。
今、cpuは一つのコアのみ100%になっている状態です。
エクスプレスでも4コアまで対応なのに、あと一つある1コアをつかってくれないんだろう。
マネージメントスタジオが予約しているからなのだろうか。
実行計画を表示できました。
hash machという処理がいくつかあって、
それが10から30%のコストを占めていました。
他はほとんど0%でした。
でも、これがわかってどうなるんだろう。
hash machはテーブルの結合で避けられないし。
実行計画の見かたとか、実行計画から具体的にどうやってパフォーマンスを
改善するかとかは企業秘密なんで教えられません。
ごめんね。
>>958 直積でもinnner joinでも、よっぽど複雑なSQL書かない限り違いはない
おそらく同じ実行計画で実行される
まずプロシジャのソース見てどこが遅いSQL文なのか探せ
それが見当もつかないようじゃ実行計画見ても理解出来んのじゃないかな
>>960 単なる慣れの問題じゃね
つかSQLServerの実行計画のグラフィカル表示はよく出来てる
あと1行で900バイト超えるようなインデックスは設計考え直した方が良い
カバードインデックスならINCLUDE使え。いちいち指定するのめんどいけど
結局 84分もかかって結果がでました。
22万行を入力して、11000行ほどの結果がかえりました。
>プロシジャのソース見てどこが遅いSQL文なのか探せ
コスト表示されるパーセンテージを見ても、相対的な処理の重たさしかわかりませんよね。
nullを許容した複数列でテーブルを結合する処理だと思うんですが。
その相対コストも高いし。
設計段階では考慮していなかったデータ分析が必要になって、
無理矢理に文字列型のnullを含められる列をつかって大きいテーブルを結合させることになったんです。
>1行で900バイト超えるようなインデックス
ってなんですか。
1行が持っているインデックスが作られる列で、
その値の大きさが900バイトを超えるってことでしょうか。
大きい値を持つ列はいけないという理解でいいですか。
>>962 テーブルの結合は避けられなくても、テーブルを結合する方法はいくつかある
なぜその方法なのか、それより早い方法が無かったか検討するのに実行計画見るんだが
そのレベルじゃ実行計画を見ても無理だろ
遅いSQL上げたら誰かが見てくれるかもな
>>865 気になってるんだが、nullを他の値と比較しても真にはならんぞ
オプションにもよるが、null=nullも真にはならんぞ
つまり、結合項目がnullの行は結合されないってことだぞ
あとインデックスのサイズに制限があるから、大きいインデックスは作れない
インデックス作ったときにエラーも警告も出てないなら気にするな
まさかインデックスないってオチじゃないだろうな
簡単に言うと「キー参照」「RID Lookup」を消して
適切なインデックスの上を走らせればいいんだけど
実行するのはかんたんではないw
>>967 >null=nullも真にはならんぞ
is nullを使うようにしています。
>まさかインデックスないってオチじゃないだろうな
最初から結合に使おうと思っていた列は、設計時に「ユニーク」指定していました。
つまり、列に PRIMARY KEY 制約 で作成したもののみでした。
そして今、見たら、今回のプロシジャで使っている結合時につかう文字列型列にはインデックスはついていなかったようです。
今、あわててインデックスの作成を試そうとしているのですが、
・インデックス名
・インデックスの種類
・一意
・キー列
があって、どう指定すれば最適なのかがよくわかりません。
キー列に、必要だと思われるすべての列を追加して、
適当にインデックス名を名づけて、非クラスター化で作成すればいいんでしょうか。
各テーブルの where, join に指定されている列を
分散度が高い順に並べる
一意制約は不要
非クラスタで
プラン表示したときにインデックス表示されなかった?
面倒ならそれでもいいよ
>>970 >分散度が高い順に並べる
ちょっとわかりません
>一意制約は不要
>非クラスタで
はい、とりあえずインデックスを作って、
再度、あの重たい処理を動かしてみます。
インデックスってすぐに作られるんでしょうか。
作成「ok」ボタンを押して、すぐにストアドプロシジャを動かしても大丈夫かな。
20万件もデータがあるなら、「すぐ」ではないわな。
>分散度が高い順に並べる
あちこちで、よく使われるってことですね
今、ストアドプロシジャを実行しています。
さっきは、80分かかったので、今度はどれくらいになるか楽しみだ。
> あちこちで、よく使われるってことですね
カーディナリティが高い、ってことだろ。
>>971 クラスタ化インデックスの方が早い可能性もあるぞ
もしそのテーブルにほかにクラスタ化インデックスがなかったら試してみてもいいかも
>>972 カーディナルと項目長にもよるけど、今時のマシンで20万件なら
非クラスタ化ならわりとすぐできるんじゃね
>>972 20万件のテーブルをT1 T2と二つ目の前に「並」べて、
T1のselectで「スカラ相関クエリ」を挿入し、
その中でT2を漁って、条件に合致するもののsum集計をとります。
なので、20万回相関クエリを参照することになるのだと思います。
そうして処理を経たこの20万行導出テーブル1と、
また別の導出テーブル2(※)4万行を直積させてwhere条件で抜粋し、集約関数を掛けます。
直積で、20万行*4万行=80万行
where句で除外して、最終的に、4万行(導出テーブル2)と同じ行数が返るはずです。
でもさっきやったら、1万行しか返ってこなかったので、調べてみるとnullを含む列がすべて除外されていました。
where句のこの除外では、is nullも合わせて使っているんですが、ちょっと失敗しているみたいです。
別の導出テーブル(※)は、
さっきの20万行テーブルと、別の同じくらいのテーブルとをinner joinし、
ある条件でグループ化したものを集約しています。
3万5千行ほどに集約されます。
この処理は、インデックスを作るとめちゃくちゃ早くなりました。
風呂に入れるくらいの時間がかかっていたのが、お茶を一気飲みするくらいの時間に短縮されました!!
ありがとうございます!!
>直積で、20万行*4万行=80万行
すみません間違えました。
200000 * 40000 = 8,000,000,000
80億行でした。
>>974 はい、わかりました。
カーディナリティーって、全行数のそれぞれの値がバラバラであることを表していたんですね。
それじゃあ、インデックスは必要ですね。
>>973 今処理が終わりました。
36分になりました。
最初は80分かかっていたので、半分ほどに短縮されました!!!
80億行の直積を処理しているのだから、仕方ないですね。
ストアドプロシジャを見直すしかないか。
たぶん、今は、もうこれ以上考えられない・・・
SQLやテーブル構成見てみないとわからんが
最終結果が4万行ならもっと早くできる気がしないでもないが
>>980 処理に必要な時間って、だいたい最終結果量に依存するのですか。
プロセスではなく。
たしかに、一番外側のselectのwhere句で一行のみを出力するように指定するだけで、
内部の80億直積にもかかわらずに、一瞬でできました。
オプティマイザに最適なプロシジャにすれば、短縮の余地があるってことですね。
> sql処理って丸一日かけて行うことも普通にあるんでしょうか
についてコメントしておくと、バッチ処理やらで一日かかるようなのは普通にあるよ。
983 :
NAME IS NULL:2013/06/22(土) 18:04:23.06 ID:dUXTmCsd
>>982 そうなんですか。
「ストアドプロシジャや設計を見直せ」という言葉がいつも聞こえるので、
いけないのではないかと思っていました。
(もちろん、そういう場合もあるけど)
でも、分量が本当に多ければ、時間はかかってしまいますよね。
コメントありがとうございます。
関係ないけど。
4時間かかってたバッチを頑張って5分で終わるように改善したら客にスゲー
怒られた事があるわw
元のバッチのリリースから3年位経ってたんだけど、出来るなら何でもっと早く
改善しなかったのかと(ry
>>984 それ、すごいですね!!
そんなにうまい具合に流れてくれるようになるんですね。
頭がすっきりしたとき、散歩しているときに、アイデアが湧けば、
頑張ってみたいと思いました。
4時間→5分なので、これはいろいろ相手先は時間節約できたはずですよね。
まさか怒られるとは。
その導出テーブルとやらが実行中に変化しないなら
事前に一時テーブルに突っ込むとかインデックス付きビューにするとかすれば
>>986 レスありがとうございます。
導出テーブルは実行中には変化しません。
ただ、各導出テーブルの導出すること自体は、インデックスを作成したことによって、
劇的に改善されました。(別のストアドプロシジャに導出クエリだけを切り分けて実行してみました。)
問題は、どうも、導出テーブル同士の結合にあるように思いました。
直積結果が、80億にもなってしまうからです。
それとも、一時テーブルにすると、それでも高速に結合ができるようになればいいんですが。
988 :
NAME IS NULL:2013/06/22(土) 18:34:08.09 ID:PkS5dfVe
テーブル結合段階で、列の値を参照しますが、
これって、導出ではなく一時テーブル同士を結合させることで、
インデックスが効くようになって高速化しますか?
そもそもホントに直積取る必要があるのか非常に疑わしい
990 :
NAME IS NULL:2013/06/22(土) 18:50:35.05 ID:dUXTmCsd
>>989 そうですよね
この辺りを見直して、改善の可能性を探りたいと思います。
>>985 >4時間→5分なので、これはいろいろ相手先は時間節約できたはずですよね。
>まさか怒られるとは。
当たり前だ、「今まで時間余計に掛けやがって、損害請求したいぐらいだ」と思うのが普通。
すみません。
相関クエリを、通常のテーブルを相関させて書くことはできますが、
相関クエリを、導出テーブルをつかって書くことはできるでしょうか。
外側のテーブルとして導出テーブルを使います。
それを内側の相関クエリ内で使いたいんです。
しかし、as table1 T1 などとして導出テーブルに相関名をつけられません。
select
x
,y
,z
,(select SUM(S) from table2 T2 where T2.k = T1.k) as r
from
)
select x,y,z,k
from abc
) as table1 T1 ←導出テーブルでこのT1という相関名をつけられません