Microsoft SQL Server 総合スレ 10
sqlserver に newid() というユニークな32バイトバイナリを返す関数がありますが
あれの long 版の関数を作りたいです。
newno() みたいな風で、関数を呼ぶたびに +1 しながら値を返すという風で
それ自体は採番テーブルを使って簡単にできると思いますが
呼び出し元のトランザクションとは別の独立したトランザクションで動かしたいのですが
どうやってやるんでしょうか。
つまり、呼び出し元が
insert into ××× values(newno(), ×,, ×, ×, ×);
みたいに利用したあとで rollback しても newno() の採番テーブルは戻ってほしくないのです。
3 :
NAME IS NULL:2013/11/27(水) 14:35:10.60 ID:x1vCM0fK
最新版ExpressのLocalDBって何なの?
>>2 シーケンスでいいんじゃないの?
その目的を満たすために採番テーブルを使うなんて複雑すぎて考えたくもない:p
ん、sqlserverだと、キー列にidentity属性をつけるのでもいいのかも
最近のバージョンなら素直にシーケンス
そうじゃないなら、別コネクションでやらないとダメなんじゃないかな
俺ならホストアプリでやる
CLRストアドならストアド内からコネクション張れるかどうか誰か知ってる?
>>5 問題はそこじゃなくて、そのテーブルへのアクセスをトランザクション外でやりたいって事
>>7 どういうこと?
採番テーブルへのアクセスを行う、newno()みたいな関数を別トランザクションにしたいんだよね?
identityでいいじゃん。rollbackしても振られた番号は戻らないよ。ご希望通り。
9 :
NAME IS NULL:2013/11/27(水) 17:56:56.75 ID:1siAqlU6
>>3 ユーザー権限で動くSQLServerExpress。
IISExpressのDB版のようなもの
>>8 まあ、要件次第でそれでもいけるかもしれんが
基本的には、ロールバックしたら、たとえばインサートした行も消えてなくなるだろ
別トランザクションって事はそれはこまるって話なんだよ
> つまり、呼び出し元が
> insert into ××× values(newno(), ×,, ×, ×, ×);
> みたいに利用したあとで rollback しても newno() の採番テーブルは戻ってほしくないのです。
話してるロールバックってこれだよね。
インサートした行が消えてなくなるのが困るっていうのが理解できないんだけど、
begin insert rollback で行が増えててほしいってのはわがまますぎない?
>>11 それを実現したいからトランザクション外って話なんだろうに
まあ、理解できてないならお前には必要ないって事だ
>>11 念のために言っとくが、その例でいけば
×××が消えてなくなるのが困るって話じゃないぞ
newno()で内部的につかってる番号管理テーブルがロールバックされるのが困るって話だぞ
>>13 だからidentityなりsequenceでしょう?
もしかしてsqlserverのシーケンスってロールバックされるの?それならごめん。
> Sequence numbers are generated outside the scope of the current transaction.
> They are consumed whether the transaction using the sequence number is committed or rolled back.
だって
そりゃ落ちるわけだ。という感想。
17 :
NAME IS NULL:2013/11/28(木) 13:19:03.34 ID:9fBb+8M0
>>9 IIS Expressは知らんけどSQLiteみたいな物って事?
IIS 7.5 Express は開発者向けに最適化された IIS 7.5 の簡易バージョンであり、単独で使用できます。
>>17 SQLiteは話が違いすぎるんで、かつてのMSDEみたいなもんじゃないの
MSDEとSQL Server Expressは同じだと思う
server2012sp1にsql server 2012入れようとしたら機能の選択一覧で何も表示されなくて頭真っ白になって今帰宅
乙 w
23 :
NAME IS NULL:2013/11/30(土) 14:58:02.50 ID:ssZKNoFD
2005Expressのストアドを一切使っていないDBを
2012Expressへ移行するのに何か注意点などありますでしょうか?
24 :
NAME IS NULL:2013/11/30(土) 18:32:53.69 ID:sLsdAjgz
基本的にはない
が、既存のDB上書きの場合ユーザーからサーバーロール勝手に外れるんで注意
まあ2012に限ったことじゃないんだが俺がハマったので書いておく
>>24 移行後サーバーロールを再確認する様に気を付けます
ありがとうございました
26 :
NAME IS NULL:2013/12/01(日) 14:47:24.13 ID:u1FkK0X5
28 :
NAME IS NULL:2013/12/04(水) 23:40:27.02 ID:0C1ZiRks
質問です。すでに定義されてある、ユーザ定義データ型のCreate文の
一括出力方法ってありますか?
ひとつずつはできるのはわかったのですが、数がおおくて・・・。
29 :
28:2013/12/04(水) 23:47:06.66 ID:???
すみません、自己解決しました。
DBを右クリ→タスク→スクリプトの作成でできました。
サーバーで使える一番安いSQL ServerはStandard
という噂を聞いたんだけど幾らくらいするもんなの?
>>31 Standardが60万もするとは…
てっきり5〜6万で買えるもんだと舐めてた
さすがに高過ぎて買えないわ
つか、この値段ならオラクルの方が全然安いね
34 :
NAME IS NULL:2013/12/09(月) 19:48:47.62 ID:M5Ulhxxm
Web Editionってモンがあんだろと書きかけて2012からなくなったことに気がついた
危ない危ない
たいして変わらないという
保守
37 :
NAME IS NULL:2013/12/15(日) 01:50:28.40 ID:aQrrxOJe
SQL Serverのリンクサーバー機能について質問です。
Express同士で互いに接続して読み取り専用とか読み書きOKの運用は可能ですか?
例えば
AA部門 Express サーバーAA インスタンスAA
A課 Express サーバーA インスタンスA
B課 Express サーバーB インスタンスB
こんな構成で
AA-(リンクサーバー)->A 読み書き
AA-(リンクサーバー)->B 読み書き
A-(リンクサーバー)->B 読み取り専用
B-(リンクサーバー)->A 読み取り専用
という様な事を考えてます。
まあやってみれ
EXPRESSがレプリケーションホストになれないのは明記されてるがリンクホストがどうかは記載がない
どうせタダだ
oracle expressなら出来るけどね。
質問です。INSERTでレコードを追加しようとしています。
確率 decimal(3.2)
上記のカラムに値を指定した時に、算術オーバーフロー エラーが発生しています。
非常に初歩的なことで恐縮なのですが、どなたかご教授願えないでしょうか。
INSERT INTO table ( ... , 確率 , ... ) VALUES ( ... , 12.34, ... );
numeric をデータ型 numeric に変換中に、算術オーバーフロー エラーが発生しました。
3ケタしかないのに4ケタいれたらオーバーフローするわな
ドキュメントぐらい読めよ
>>42 整数部3桁小数点以下2桁と勘違いしておりました。
ありがとうございました。ドキュメントを見返してきます。
bcpコマンドについて教えてください
現在、名前付きインスタンスでデフォルトポートを別に設定している状態です。
そこでローカルでもリモートでもbcpを使うと、
サーバ名,ポート\インスタンス名
という入力が必要になります。
セキュリティ上の観点からポートを変更しているので、コマンド打つたびに
ポートやサーバ名を指定したくないのですが、
サーバ、ポートを指定せずにbcpを使うことってできませんか?
相手の住所も名前もわからないのにどうやって連絡取れると思うの?
あらかじめ登録してデータを暗号化しておけばいくらで連絡は取れるじゃん
それは、連絡先は解ってるってことだが。暗号化されてはいるが
接続先を指定しなければ、ローカルサーバのデフォルトインスタンスに接続するんだから
それ以外に接続したければ接続先を指定しなければどうしようもないでしょ
暗号化して指定したいって話であれば、BCPはそんなものには対応していない
SQLServer2008のセットアップをしているのですが、
認証モードの設定の箇所で混合モードを指定した時に
入力したパスワードが一致しませんでした。パスワードを再入力してください。
というメッセージが出てきて設定が完了しません。
過去、SQLServerをインストールしたことはありますが
すでにアンインストールしています。
どうしたらよいでしょうか
49 :
48:2014/01/04(土) 02:32:15.61 ID:???
自己解決しました。すみません
パスワードを入力する箇所に
sa
password
というふうに入力していました。
どちらもパスワードを入力する場所でした。
SQL Server compact4.0では半角/全角、ひらがな/カタカナは区別できないのでしょうか・・
サポートされる照合順序をみてもKS等がなく、困っております。
データベースエンジンが、なんかアレ、ほらLatinなんとか、みたいになってんじゃないの?(思い出せない)
52 :
NAME IS NULL:2014/02/06(木) 17:02:34.95 ID:TQ+RMbfO
SQL Server 2012R2 EXPRESSのサーバーサイドにSQLDMOを導入する方法を教えてください
SQLDMOがSQL Server 2005までしかサポートされなくなって大変な事になっています!
SMOを使えとか言うのはナシでお願いします
トラブったらどうすんの?
つSQLServer2005Expressを導入する
そもそもSQLServer2008の時点で予告されてデフォルトでは入ってなかったのに今まで放置してきた奴が悪い
なんで今頃騒いでんのよ? と思ったら2008のサポート先月で切れてんだな知らんかった
でも延長サポート2019/01/08までらしいから全然平気まだまだいけるいけるw
>>52 現在SQL Server 2005 Express が導入されているPC上で、下記の2つのファイルを取り出せ。
C:\Program Files\Microsoft SQL Server\90\Tools\Binn\Sqldmo.dll
C:\Program Files\Microsoft SQL Server\90\Tools\Binn\Resources\1041\Sqldmo.rll
そしたらSQL Server R2 2012 Express を導入したPCで、上記と同じパスにフォルダを作成し
ファイルをコピーしろ。
コマンドプロンプト(管理者)で下記をタイプし、Binnフォルダをカレントディレクトリを設定してSQLDMOを登録しろ。
cd "C:\Program Files\Microsoft SQL Server\90\Tools\Binn"
regsvr32 Sqldmo.dll
SQL Server 2008 以降に導入するSQLDMOのファイルは、下記のSQL Server 2005 下位互換コンポーネントの
SQLServer2005_BC.msiで導入されるファイルを使用することをすすめる。
ttp://www.microsoft.com/ja-jp/download/details.aspx?id=17943 マイ糞ソフトはSQLDMOのサポートを勝手に打ち切ったが、日本においてはCOMベースで開発された
金融システムが腐るほどある。それらを.netに移行するには膨大な予算が必要になりそう容易く移行できない。
それゆえ企業ユーザーの多くはSQL Server 2005が稼働可能なWindows 7への定着が一般化している。
Windows 8への移行が進まない大きな理由のひとつになっている。
そもそもサーバーカーソルを廃止し、クライアントカーソルを発展させたADO.netの時点で大きな崩壊があった。
Access並みのパフォーマンスをSQL Serverで得る有効な手段ではあるが、代償も限りなく大きい。
>>55 むしろ今までずっと2005を使ってて、ここに来てWindows 8.xへ2005を導入できない事に気づいて
慌てて2008や2012へのマイグレーションに動き出してる人が多いのでは?
58 :
56:2014/02/06(木) 19:13:46.04 ID:???
一応クライアントでSQLDMOを登録する場合についても触れておく。
同様にSqldmo.rllファイルを下記のフォルダ(無ければ作成)へコピーしろ。
c:\Windows\System32\Resources\1041
あとは同様にSqldmo.dllをRegsvr32で登録すればよい。
ここで重要なのは、Sqldmo.rllファイルの配置場所は決まっていて
任意の場所に配置することができないという事だ。
それに引き替えSqldmo.dllはどこに配置してもかまわない。
32bit環境を前提に話をしたが、x64でも理屈は同じだ。
但し使用するファイルはSQLServer2005_BC.msiではなくSQLServer2005_BC_x64.msi で
展開されるファイルを使うこと。インストーラーは64bit用だが、展開されるSQLDMO関連ファイルは
32bitなので実際はSQLServer2005_BC.msiのものと同じものかも知れないが比較はしていない。
>>57 今ざっとggってみたが、別にインスコ出来なくはなさそうだけども
サポート切れって話なら2005自体がとっくの昔だし
>>60 見たところ違う原因の気がしないでもないんだが、まあ普通は2005に固執する理由もないわな
2012にして動いたとかの報告ないから真相は闇の中
62 :
NAME IS NULL:2014/02/06(木) 20:58:55.53 ID:TQ+RMbfO
>>56 できました!!ありがとうございました!!!
ご指示いただいたのと若干違う点がありましたが、それもまた勉強になりました!
まず、パスですが、SQLServer2005_BC.msiを導入したときのSQLDMO関連ファイルの展開先は
C:\Program Files\Microsoft SQL Server\90ではなく90の部分が80でした
そこで色々実験した結果、Sqldmo.dllとSqldmo.rllの相対位置が重要であることがわかりました
つまり、Sqldmo.dllは登録時に自分の位置から見てSqldmo.rllが直下のResourcesフォルダ内の
1041フォルダにSqldmo.rllがある時にのみ登録が成功するようです
なので、90の部分が80でもどちらでも動くのです
クライアントで使うときも、Sqldmo.rllをc:\Windows\System32\Resources\1041へ置くならば
それはSqldmo.dllをc:\Windows\System32に配置するという前提があっての事です
Sqldmo.dllの場所は任意で良いのは確かですが、Sqldmo.rllがSqldmo.dllからみて
規定の相対位置に存在する必要があります
SQL Server Express 2012 R2でもSQLDMOは問題なく動きました。
>>59 Windows 8.1 または Windows 8へSQL Server 2005をインストール中に互換性問題とサポートされない旨の
警告ーダイアログが何回か表示される。無視して強行するとインストールは成功し、機能的にも問題が
あるようには見えず正常に動作する。
あとWindows 8.1 または Windows 8 で SQL Server 2005 のインスタンスが検出されると
アクション センターで警告が表示される。
とはいえ、Windows 8/8.1でSQL Server 2005を使い続けるべきではなかろう。
XPでの動作が必要ならSQL Server 2008を使用すれば良い。
66 :
NAME IS NULL:2014/02/13(木) 19:15:13.78 ID:y7bjNUET
も
っ
68 :
NAME IS NULL:2014/02/14(金) 15:01:55.22 ID:yfHSzXmS
ストアドを使うのは止めた方が良いと言われました
なぜストアドを使ってはいけないのでしょうか?
それは使うな言う奴に聞くべきだな
プラットフォームに依存しないRDBとか信じてる夢見がちな人なんだよきっと
ストアド使うとSQL SERVERバージョン移行時に死ぬのです
実際にストアドでバージョンアップのときに死んだ事例おしえれ
ggrks
>>72 逆に死ななかった例を知りたい
おそらく単純パラメータークエリー程度の用途なら死なないのだろうな
こっちはビジネスロジックを作りこむという前提での話だから
初心者と話してもらちが空かない
で?
具体的にはどんな不具合またはエラーが出るんだい?
そこまで言うからには答えられますよね^^
VerUP時にストアドの互換性が無いのはオラクルも同じだろ?
しかも静的結合とかしていた日には地獄と化す
地獄は嫌だからインターネットから遮断して旧バージョン使い続けてます
by某一部上場企業
開発者はネット検索も出来ませんぜ
上の方にあった管理オブジェクトがサポートされないとかならともかく
ビジネスロジックの作りこみに、特殊な機能は必要としないだろ
実際に何が問題でストアドがバージョンアップで不都合起こすんだ?
具体的な内容書けない時点でお察し
> 初心者と話してもらちが空かない
逃げる気満々だし (w
横やりでスマンが、ストアドを使う事自体には何も問題は無いだろう?
むしろ積極的に使うべきかと。
問題はMicrosoft SQL Serverのバージョンアップにおける移行時に
ストアドを使用したシステムで問題が発生する事が多いと言う事でしょう。
しかし、これに限らずマイクロソフトのシステム製品はろくなものがない。
かつてMicrosoft Mailというメールシステムがあった。
MTAがDOSで動きメモリー不足で毎回リブートしないとメール配信が止まる。
そんなもんが外資系大企業の情報基幹システムで当たり前のように使われていた。
あれからすれば現在のSQL Serverの完成度は段違いに高いが
それでもマイクロソフト製品で使って良いのはデスクトップOSとOffice製品だけという伝説は
結構年倍のITの人達の間では定着した考えになっている。
論より証拠でマイクロソフトのサーバー製品のシェアはほとんど伸びていない。
TSQLの非互換は結構少ないほうだと思うけどな
おかげで古い部分を抱えすぎてるくらいだし。
もしかしてスクリプトでなくて、
attachでバージョン移行してるとかそんなの?
ウチSQLServer2005メインで次期システム2012R2移行中で、
2005側メンテしつつ2012へ丸移植を繰り返してるが不具合なんぞ一回も出たことないわ
一体どんなマイナー機能使えばバグるのか是非聞きたいね
>>80 >問題はMicrosoft SQL Serverのバージョンアップにおける移行時に
>ストアドを使用したシステムで問題が発生する事が多いと言う事でしょう。
だから具体的にどんな問題がでてるんだ?
あと個人的意見だけど
パラメーターとかクエリーとかメモリーとかサーバーとか
最後に長音記号つけると素人っぽくて嫌だ
統一が取れてれば十分じゃね
個人的なということなら、のばさない表記は駆け出しっぽくていやだな
>>80 >マイクロソフトのサーバー製品のシェアはほとんど伸びていない
それはいつからいつまででそう言う話?
すくなくともDOS時代やNTの頃に比べればかなりのシェアを取ってると思うけど
結構年配(だよな、年倍って)っていくつぐらいの人の事をいってるんだ
>>84 >素人っぽくて嫌だ
は
>初心者と話してもらちが空かない
に対する当て付けだろ
サーバっておかしくね?サンバかとwww
自分ルールの押し付けはMS社員並みだわ
>>85 >DOS時代やNTの頃に比べればかなりのシェアを取ってると思うけど
持ち上げるにしても、もう少しなんとからなん?
かえって惨めになる・・・
MS MailはMTAがNTで動くようになってからはかなり使えるようになった記憶が・・・
Lotus Notesが全盛のころ、後塵を拝したExchangeは惨めだった
あのころのSQL Serverはまだマイクロソフトのものでは無かった気がするが
それこそ救いようのないサーバ製品だったよ
>>81 >attachでバージョン移行してるとかそんなの?
なにそれ?どうやるの?
少なくともBackup/Restore+権利植え付けじゃね?
Optimistic lockを楽観的ロックと訳す奴と同類だなw
Microsoft製品は所詮Windows (Server)ベースでスケーラビリティの面で弱い
シェアは10%も取れれば誉めてあげるべき
>>85 年倍を勝手に年配と解釈するのは如何なおのか?
年倍の意味がわからないのなら、素直に教えを乞う姿勢が欲しい。
ムラの住人ってやっかいだな
とうの昔に終わってるMSSQL Serverで話題になる事が驚き
ここまで結局具体例何一つなし
まったくもってお察しの通りって奴だな
安いしそこそこ使えるからな
ストアドは良いとしてもアセンブリはやめとけ
SEXはいいがゼンズリはやめとけ
ああ、性的結合したい。
お前ら構文教えろ。
>>99 SELECT *
FROM My as Me
INNER JOIN My as Self
ON Me.tintin=Self.righthand
ABORT
103 :
99:2014/03/10(月) 22:56:05.06 ID:???
>>100 試してみたのですが、いまいちパフォーマンスが出ません。
∧__∧
(´∀` )
Select (⊃⌒*⌒⊂) From My as Me ....
/__ノωヽ__)
どこがイケないのかしら...
>>74 新しい関数やら拡張に頼るからそうなる
遠回りでも枯れた解決方法使わないと泣き見るぜ
今のマシンならfrom句でゴチャゴチャやっても耐えられる
2014が出ても特に盛り上がらない
も
107 :
NAME IS NULL:2014/04/29(火) 10:54:09.01 ID:JKri6iHc
>>105 4月1日に正式リリースされてるのか。
日本のwikiは放置プレイされてるなw
2014ってOLTP部分ぐらいしか変わってないし
2012から上げる意味がほぼない
>>108 オンメモリーデータベースも売りじゃないの?
110 :
NAME IS NULL:2014/05/06(火) 14:02:42.78 ID:vUlazn4J
初心者的な質問を失礼します。
仕事でOSが2003R2でSQLSever2000を使っていますが
クエリアナライザで8000件とかのUPDATEをすることがあります。
クエリアナライザで8000件を1度に更新とかしてもシステム的には問題は無いのでしょうか
今のところエラーなども無く2秒くらいで完了していますが不安なので教えて下さい。
宜しくお願いします
いやもう全然OK!
バンバンやっちゃって更新!
>>111 回答ありがとうございます。
安心して事故が無いように仕事します。
本当にありがとうございました。
仕事で使ってるなら、バージョンアップも考えた方がいいと思うぞ
OS側もあと1年くらいじゃないか?
2012になってライセンス料跳ね上がったからな。
質問です。
バックアップを取った後、テーブルやインデックスの再構築。
その後バックアップを復元すると再構築する前の断片化率に戻りますか?
そりゃそうだ。
118 :
116:2014/05/17(土) 08:01:50.41 ID:???
業務システムの構築を考えてます。5人程度で使う主に伝票処理や売り上げ管理で現状はExcelを共有してやっているようなかんじです。予算もないのでSQLServerExpressを使いAccessをクライアント側で使いたいと思っていますが、他に選択肢がないものか色々探してます。
クライアント側で本格的な開発環境を使わず、帳票発行や、データ入力、照会ができてSQLserverとも相性のよい(こんな都合のよいことばかりあるとは思えませんが)お奨めの構成はないものでしょうか?
Access,Excel等のVBAを使ったプログラミングをしたことはあります。エスパーのみなさん色々突っ込みどころは満載ですがお付き合いください。よろしくお願いします
それでいいんじゃね。
その程度の規模なら、SQLServerもなくして、Accessだけで完結させてもいいとも思うけど。
>>119 SQL-Server + Visual Basic.NET でいいんじゃね?
122 :
NAME IS NULL:2014/05/17(土) 17:34:51.86 ID:5QvoLWB2
まあ、VB.NETかC#かだな
開発環境は無償のEXPRESSで行けるだろ
>>120 ネットワーク越しにAccess使うと壊れるってよく言われとるみたいなので不安なのですが、、、、
実際にはどんなもんなんでしょうか。。。
>>121、122
帳票も無料の開発環境で対応できるんでしょうか?
Accessのレポートと同じ程度のことができれば問題はないのですが、、、、
LightSwitchとか少し気になってたんですけども今はどうなってしまったんですかね?
LightSwitchも、Office統合も、Express版ではできない、はず。
レポートはACCESSの圧勝
VB.NETでまともな帳票作りたかったら、何かしらのツール買う事になる
>>124 > 帳票も無料の開発環境で対応できるんでしょうか?
できる、できない、というならできる。
ただ、それなりの手間かかるから、Access なり市販の帳票ツールとかを検討した方がいい
試用版とかある奴もあるから、触ってみればいいと思うよ
128 :
NAME IS NULL:2014/05/18(日) 08:39:22.10 ID:saJJmCEY
Accessをフロントエンドとして使う場合ってのはODBC接続でリンクテーブル
を設定して使うってのが一般的なの?
129 :
NAME IS NULL:2014/05/18(日) 09:11:20.42 ID:saJJmCEY
>127
無料は苦行の道。。。ですね。地獄の沙汰も金次第というわけですねぇ。。。
いっそのことwebに移行してしまったほうがいいのでは?と思ってしまうけど、
学習コストが高すぎるし、トラぶった時の対応とか、モノにできるかが心配。
頼まれてやっているわけではないので気楽といえば気楽なのですが、、、、
>>123 今でこそ多少の同時使用が可能だけど Access は元々スタンドアロン前提のDBだったからね
共有フォルダにファイル置いて20人で同時使用とかやれば壊れるのに時間はかからないと思うよ
ファイル形式の変わった 2007 あたりから壊れ難くなったとも言われているが、オススメできないね
アプリやネットワーク環境にもよるけど…
自分の場合、安全に使えたのはフロントと DB を分離した場合で5クライアント程度だった
>>124 無料で Access レベルのレポートは、まず出来ないと思った方が良いよ
サブレポートなんかあった日には詰む
>>128 一般的というか 2013から adp が使えなくなってるから adp で作ってしまうと将来困るって事だね
>>129 Access 経験者ならフロント Access で DB だけ SQLSERVER が良いと思う
LightSwitch とか web でやるくらいなら C# + SQLSERVER をオススメするなぁ
132 :
NAME IS NULL:2014/05/18(日) 17:25:02.41 ID:saJJmCEY
>130
C#ですか。。。興味はあるんですが、VBAしか触ったことのないので、
C(Java?)の文法から勉強するのは遠回りかなぁって気がします。
でもこれを機会に勉強しちゃえばそれを上回るメリットがありそうですね。。。
その後調べてみたところ、SQLServerだと帳票だとReportingサービスとか、
他にもデータのI/OなんかにはIntegrationサービスとか知らなかった機能が
色々とあるようでこっちにも興味がわいてきました。
とくにReportingサービスはAccessのレポート機能に近い感じの印象を受けましたが実際に使ってみた方はいますか?
SSRSはExpressだとレポート作成ができない
(出力はできる)
正直Accessに比べると使いにくいし資料も少ないから
案件でこない限り積極的にやりたくない
手軽にやるなら
ネットワーク上の同じmdb/accdbファイルで更新すると壊れるけど
テーブルのみmdb/accdbとフロントエンドmdb/accdb
で分けたらそうそう壊れない。
できればクエリとかじゃなくてADO接続でやればなおよし。
SQL Server建てると今度はそれの管理をしないといけないから
まずは分割をおすすめ
>>132 VBA → VB.NET も良いけれど、結局全く違うから、同じコストかけるなら C# の方が良いってなる
Reporting は Report サーバー建てるとかじゃない限りあまり使わないんじゃないかな…???
以前 VS2005Std ユーザーだったから、力技でローカルレポートに RDLC 使ってたけど
Access には及ばないよ Access のレポートってかなり強力ね
あと SQLSERVER で Reporting となるとお金(ライセンス)もかかるから
VBA 経験者なら…やっぱり Access ってなる
135 :
NAME IS NULL:2014/05/19(月) 20:52:21.35 ID:PDe68ElT
>133
情報ありがとうございました。スタンドアロンで使っているときにテーブル
だけのmdbとそれ以外で分割して運用したことがありました。バックアップを
がとり易いと思いそうしたのですが、ネットワーク越しに利用するときでも
ファイルが壊れにくいというメリットがあるんですね。勉強になりました。
早速試してみます。
ADO接続というのは、、、自分でDBにコネクションを作って、SQLを発行して
レコードセットを作ってという感じでしょうか?あまり使ったことはないのですが、
これを使ってしまうとフォームやレポートで各オブジェクトとのバインディング
できるんでしょうか。。?
質問させて下さい。
SQLCMDでSQL結果をテキストに格納しているのですが
:out ファイル名で出力開始されますが
終了のさせ方がわかりません。
Mysqlなら teeで開始 noteeで出力終了になるので 相当するコマンドがあると
ぐぐってますけどいまだ解決できておりません。よろしくお願いします。
>>136 :out stdout じゃダメなの?
質問させてください
テーブルBにカラム1に”1”、カラム2に"CODE='12345'"が入っています。
※カラム2は条件式が入ってます
やりたいことは、テーブルAをSELECTしたときにテーブルBをINNER JOINして
テーブルAのカラム1とテーブルBのカラム1が一致した場合
WHERE句の条件にテーブルBのカラム2の文字列条件式を条件として使いたいのですが
うまくいきません。
ご教示ねがえませんでしょうか?
SELECT * FROM テーブルA as A INNER JOIN テーブルB as B
ON A.カラム1=B.カラム1
WHERE
---ここからがわかりません
CASE A.カラム1 WHEN B.カラム1 THEN B.カラム2 END
カラム2に"AND CODE='12345'"を条件に追加したいのですが
どうすればできますでしょうか
発行したいsqlは以下になります
SELECT * FROM テーブルA as A INNER JOIN テーブルB as B
ON A.カラム1=B.カラム1
WHERE
CODE='12345'
テーブルBに入った文字列条件式を
現実の条件にしたいのです。
テーブルA、Bのカラム1同士が一致した場合
困ってます
なにとぞよろしくお願いします
>>137 ありがとうございました。 レス遅くなりごめんなさい。
>>138 無理じゃね?
ストアドで条件式のパースからやると言うならなんとかなるかも知れないけど...
セキュリティリスクも心配だしね
素直にアプリ側で SQL 組み立てて再発行しなよ
今更2012でiifとchooseなんてものが追加されてたのに気付いた
要らんけど、VBA(JET)ユーザー向けにしては取り込み遅すぎる
生成されるクエリが大文字なのはなんとかならないもんだろうか
テンプレートのソースを見るとみんな小文字でかかれてるのに
>>143 それManagement Studioの話?
SQLは大文字記述のほうが多数派って判断じゃない
MSDNとかだとキーワードが大文字で列名はPascalケースだね
すみません、xml型のフィールドに対してLIKE演算子は使えないようなのですが
同様のことをするにはどうすればよいのでしょうか?
どこかのエレメントとかではなくフィールドに格納されている文字列全体に対して検索を行いたいのですが?
146 :
NAME IS NULL:2014/06/23(月) 09:10:41.53 ID:WIsKu6pW
◎2chスレッド勢いランキングサイトリスト◎
★+ニュース板
・ 2NN (推奨サイト)
・ 2chTimes
★+ニュース板新着
・ 2NN新着
・ Headline BBY
・ unker Headline
★+ニュース板その他
・ Desktop2ch
・ 記者別一覧
★全板
・ 全板縦断勢いランキング (推奨サイト)
・ スレッドランキング総合ランキング
・ ログ速
★全板実況込み
・ 2勢 (推奨サイト)
・ READ2CH
・ i-ikioi
※ 要タイトル検索
※ 2chブラウザ併用推奨
SQLServer2008です。
コミットの最中にネットワーク障害などが起きてコミットが中断された場合、
更新系SQL1、2、3と実行していたもののうち、1だけがロールバック
され、残りはコミットされるということは起こりえますか?
>>148 マルチすんなボケ
向こうに答えちまったじゃないか
>>149 すみません。誘導されたときに一言書いとくべきでした。
デッドロックが起きた場合、トランザクションは自動で
ロールバックを行いますが、他に同じように自動で
ロールバックを行うようなパターンはあるでしょうか?
>>151 キャストエラーとか更新クエリでエラーが起きたらロールバックするでしょ
どこで質問するか迷ったのですが、こちらで質問させて下さい。
SQL Server 2012でシステムを開発しているのですが
夜間バッチ処理で日々1000万件前後のデータを追加する処理があります。
件数が多いので処理時間がそれなりにかかってもいいのですが
あまりにも遅すぎて、もう少し早く出来ないか検討しております。
処理の流れはざっくり以下です。
1.テキストファイルからbcpでワークテーブルに1000万件のデータ取込み(5分強)
2.ワークテーブルのデータをストアドで加工(10分弱)
3.2のレコードを本番テーブルにINSERT SELECTで挿入(2時間)
3に時間がかかりすぎており、挿入先のテーブル件数が今後増えたときに
比例して処理時間も増えると思われるので懸念しております。
SQL Serverでこれ程の件数を扱うシステムを作成するのが初めてなので
チューニングに必要な情報が少なすぎるとは思いますが
Oracleのダイレクトインサートのような機能はないでしょうか?
インフラ系はインフラチームが担当したので同じような相談はしましたが
SQL側で対応するしかないような事を言われています。
何か高速化するいい案があればご教授お願いします。
>>153 基本だと
・1000件とか10000件単位でコミットに変える
・INSERT SELECTにTABLOCK,HOLDLOCKつける
・分離レベルをSERIALIZABLEにする
・本番にインデックスがあるなら一旦消して再作成
・テキストの実績があるならBCPで一旦出してBCPで入れる
>>153 1.テキストファイルからbcpでワークテーブルに1000万件のデータ取込み(5分強)
2.ワークテーブルのデータをストアドで加工(10分弱)
3.2のレコードを本番テーブルにINSERT SELECTで挿入(2時間)
完全にインフラ以前の問題。
とにかくまずは、全部一括で処理してるのが悪いので、メモリに収まる範囲内で区切って処理する。
あとは、取り込み前に加工をして(当然、この処理も分割しつつ)ストアドを使わないようにする。
157 :
153:2014/07/09(水) 10:38:50.95 ID:???
>>154 せっかく教えて頂いたのですが、今回の問題とは関係ない高速化の話かと
レスありがとうございました。
>>155 > ・1000件とか10000件単位でコミットに変える
途中でエラーになった場合のロールバックができないのでNGなんです。
データの特性とテーブルの構造上、いつ追加されたレコードか
後から判断できないのでリランができません。
大事な部分を書いていなくてすいませんでした。
> ・INSERT SELECTにTABLOCK,HOLDLOCKつける
既にやっております。
> ・分離レベルをSERIALIZABLEにする
これはどのような効果があるのでしょうか?
ちょっと調べてみます。
> ・本番にインデックスがあるなら一旦消して再作成
これもやっています。
記載しないですいません。
> ・テキストの実績があるならBCPで一旦出してBCPで入れる
BCPってロールバックききましたっけ?
ちょっと調べてみます。
>>156 >>155さんにレスにしましたが
ロールバックがきかない仕組みはNGなのです。
大事な前提条件を記載しないですいません。
やはり根本から見直す必要がありそうですね…
INSERTされてるテーブルのFILLFACTOR下げてみるとか
難儀だなぁ。日々1000万件って何のシステムなんだろ。
復旧モデル書いてないけど、一括ログモード試してみるのも良いかもしれん
単純モデルでもいいけど
1行でも失敗したら全部一括でロールバックできないとダメっていうことか。
それだとロールバックも死ぬほど時間掛かるだろう。
その日の分をパーティションにして、ダメだったらtruncate。
ってしたいところだが、SQLserverはパーティションのtruncateできなかった気がする。
沢山レス貰ってて返事しないですいません
>>158 FILLFACTORで調整できるレベルではなさそうです。
が、やってもいないので時間がある時に少しいじってみます。
>>159 アクセスログ解析関係です。
安定稼動したらもっと件数増える予定です…。
>>160 既に同じDBサーバー2台体制で夜間に一括バックアップを取っているので
リアルタイムの復旧は不要との事で単純モデルにしています。
>>161 そうなんですよね…
SQL Server嫌いじゃなかったんですが、自分の知識不足と
Oracleなら…っていうのがあって残念な事が多いです。
今回のお客さんはOracleの値段が気にくわないらしく頑なにSQL Server押しです…
なので今後データ量が増えてもDBは変えられないと思います。
インフラ系の強化は確約済なので多少遅くてもマシンパワーでと思っていたのですが
今の時点でこの遅さだとちょっと不安です。
>>162 本番に更新IDかなんか一列追加してロールバックできるようにすれば?
>>163 何か大きな改修が入るタイミングならそうしたいです。
今はテーブルレイアウトを変更できるタイミングではないので難しいですね。
遅レスにも程があるけどBULK INSERTじゃ駄目なの?
「夜間バッチ処理で日々1000万件前後のデータを追加する」
そもそもRDBにこんなことするのが無謀なんじゃないのか。
消さない場合、1年で36億5千万件。
目眩がする件数だなあ。
ビッグデータ扱えるDBMS使った方が良いんじゃないの?
今まで誰も設計が悪いと言ってこなかったのが不思議w
いっそ、毎日テーブル作っても良いんじゃないかと・・・
アクセスログ解析らしいがそんなに沢山ぶち込んだデータの解析に何日掛かることやら。
そっちは心配しなくて良いのか?
BCPで5分、更新して10分なんだから、IO時間で考えたらそんなもの
それをテーブルに追加して2時間ってことは、追加先テーブルが遅い原因
インデックス再計算かページ分割かだろうと思うけど
追加先テーブルのクラスター化インデックス見直せば良いだけの気がする
IDENTITYとクラスタインデックスは無関係だと思うが
174 :
NAME IS NULL:2014/07/19(土) 19:13:34.71 ID:Fgx3cXjv
>>173 クラスタインデックスが単なる連番ってこと
それホントにクラスタ化インデックスである必要があるのか考えた方がいいんじゃね
>>167 SQL Serverスレに居てその発言は失笑者だな
ビッグデータが扱えるRDBMSって何?
SQL Serverも2012からHadoop連携とかできますけど
そもそも書き込みの遅さはDBの性能というよりハード依存でしょ
BCPが2時間っていってるならハード性能上げろって言う意見もあるんだろうけど
BCP5分のデータ処理に2時間かかるんだけどって話だぞ
179 :
NAME IS NULL:2014/07/21(月) 15:26:16.61 ID:kANr0DGp
>>176 RDBMSなんて何処にも書いてないだろ?
勝手に脳内変換するんじゃないw
まあOracleで可能なら値段の差としか
OracleでいうUNDO領域(ロールバックセグメント)は
tempdbになるからそこの調整か
>>179 RDB とは書いてあるけど RDBMS とは書いてないってか?
まあ、お前は正しいよ。
会話したくないけど (w
182 :
NAME IS NULL:2014/07/21(月) 17:22:18.83 ID:kANr0DGp
>>181 良くレスを見直せ
RDBともRDBMSとも書いてないだろ
DBMSだよDBMS
ビッグデータを扱えるRDBMSが有るのならおれも知りたいwww
>>182 まあ、お前は正しいよ。
会話したくないけど。
184 :
NAME IS NULL:2014/07/21(月) 18:37:43.49 ID:aDgLk086
誘導されてきました。
SQL Server2008R2 Expressの質問です。
SQLの知識が全く無く、物凄く曖昧な内容になりますがすみません。
おそらく、「インスタンスを追加する場合にはどうすればよいか」といった質問になるのだと思いますが
なにぶん知識が無いものでして、以下に状況を記載しますので問題点・解決策を汲んでは頂けないでしょうか・・・
あるソフトA、そして別のソフトBを1台のPC(Windows7 64bit)で動かそうとしています。
ソフトA,Bは共にSQL Server2008 R2を使用しています。インスタンス名は共に"MSSQLSERVER"です。
このPCは既にソフトAでセットアップされています。
ここにソフトBをインストールしようとしているのですが、ソフトBはSQLのインストール時にsaのパスワードを
「bbbb」(仮)に変更しろと記載されています。
ですが上記の通り、このPCのSQLはソフトAインストール時に設定されているのでsaのパスワードは
「aaaa」(仮)に設定されており、変えられません。
もちろん、そのままソフトBのインストールを試すと、ソフトBはインストール時に失敗してしまいます。
厳密には、本来インストール時に作成されるはずのデータベースが作れないようです。
そこで、色々調べてsaのパスワードを「bbbb」へ変更してSQLを再起動した上でソフトBのインストールを
試行してみました。これでも現象は変わりませんでした。
検索して調べた範囲では、
・SQLは複数のインスタンスを持てる。
・同じインスタンス名(MSSQLSERVER等)は持てない
とのことなので、インスタンスを分けることも出来ず、幸いにもソフトA,Bを同時に使用することはないため
どちらかのソフトを起動する際にsaのパスワードを切り替えて対応できれば・・・と思ったのですが
上記の通り、予想が外れて頓挫しております。
ソフトの作りの話になると思いますので、同じインスタンス名を共存させることはできないのではないかと思います。
こうした場合、どうするのが良いのでしょうか。一日半潰しましたがここまでやったものの分かりませんでした。
何卒お知恵をお貸し下さい。
>>184 普通はどちらかのソフトのインスタンス名を変える
他のSQLServer使ってるソフトと同居できるかそのソフトの製造元に聞け
あと、それはSQLの知識ではなく「SQL Server」というソフトの知識です。
SQL | Server2008 ではなく
SQL Server | 2008 と区切ります。
メーカーに問い合わせをするときにSQLのインストールに失敗といわないように気をつけてくださいね。
おおかたソフト会社に聞けない事情があるから聞いてるんだろ でなきゃ二日も費やして・・
さて、明日で三日目なのかも知らんが、正直に書かないと誰も親切心起こさないぞ
どのメーカーのなんていうソフトでここで躓いてるとかな それ次第で呆気なく回答でるかもだし
マズイ所はひた隠しにして甘い汁吸おうったって、そうはイカのキン○マって奴だわな
>>184 どういうエラーで失敗してるか書かないと分からんぞ
俺はエスパーなのでデータベース名がダブっていると予言する
DB板は親切な人が一杯いるから
ユーザー環境に合わせて設定を行えないって、使いにくそう
expressだから、ソフトのインストール時に勝手にインストールしようとするんだろ
んですでにインストールされてる場合失敗する
その手のやつは同居させようとしても大概製造元は動作保障してくれない
まあsa固定って時点でなー
別の仮想環境でも立ち上げてください言われんのがオチじゃね
インストール時にsaのパスワード聞かれるから変更して下さいって事じゃないかと予想するんだが
>>194 saはインストール時に使ってるだけで実際のユーザは別なんでは
つうかよく考えたらExpressだったらデフォではsa存在しねんじゃねのか
先入れした奴がインスコ時に設定したかも知れんけど
何にせよインスタンス変えられない時点で元のと何かがカチ合う可能性高い
大人しく開発元に聞くべき
>>197 Expressかどうかは関係なく、今時のSQL ServerはWindows認証がデフォだから
saでログイン出来ないわなあ。
インスコするときに統合認証を選ばないとダメだ。
expressでも後から変えられるだろ。
200 :
184:2014/07/23(水) 07:30:38.62 ID:???
みなさんありがとうございます。
時間がなくてレスできていませんでした。
余計なことをまで書いてしまいそうなので怖いのですが
悪いことをしているわけでも、情報を小出しにしている
わけでもないんです…すみません時間ができ次第
追記したいと思います。
情報を小出しにせず発生している問題点を「長文うざっ」と言われない
長さに明確にまとめる事ができるやつは、
そもそも、こんな所で質問しなくても自己解決してしまうw
質問文書いてる途中で念のためググったら解決したこと数知れず
質問です。
常駐プログラムで何日もDB接続しっぱなしとかにしても切れないもんなんでしょうか?
使うときにOpen/Closeという使い方しかしたことないので・・・
設定次第だけど、10分以上とか長くしたい場合は、
下のレイヤーであるtcpについても注意する必要がある。
tcpタイムアウトについては、OSの設定や途中のNW(のパケットフィルターなど)がカラム。
接続しっぱなしのアプリって何するアプリ?
>>204-206 ありがとうございます。
キューテーブルを作って別サーバから
そこを監視してレコードが入ったら
所定の処理をするというなプログラムです。
ADO.NETですが
常駐にするか単一処理のプログラムを間隔起動するか検討中です
>>207 監視間隔が5分以上で良いのならタスクスケジューラ起動でそれ以下なら
Windows Serviceで常駐かな。
どちらの場合もBoot時の起動でSQL Serverより早く立ち上がる事があるので
その辺りの考慮は必要。
Windows Serviceだと遅延起動にしとけば大丈夫。
SQL ServerはディスクIOのパフォーマンス問題が発生しにくいんですか?
SQL ServerをSQLって略す人が居なくなってほしい
あと、vmwareをvmって略す人には死んでもらいたい
213 :
NAME IS NULL:2014/08/03(日) 02:03:53.96 ID:YBXNmTaU
ケツの穴が小さいのう
どうでもいいわ
Microsoft SQL Server 7.00を使用しています。
チェックポイント時にデータベース ID 1 の sysdatabases に行が見つかりませんでした。
エラー : 3501、レベル : 21、状態 : 1
というエラーが出るのですが、どのように対処すべき、というのがあれば教えてください。
とりあえずdbcc checkdbじゃないか
しかしさすがに7.0とか古すぎ
OSは、NT4.0だろうか
とっくの昔に延長サポートも切れてる気がするが
ハードどうしてるんだろ。
部品なくて、復旧不可能とかあり得るわけだが。
VMwareなら2000とかまだイケるのかな?
すげー、触ったことないわ・・。
移行するコストより維持するコストの方が高そうだな。
ありがとうございます。dbcc checkbから始めてみます。
OSはXPなんですが、急に舞い込んできた件に加えて、7.00なので
手も足もでない状況です。
古いもんをリプレースするのなら良いが、古いのを古いままメンテは心が折れるね
ご愁傷さまです
221 :
NAME IS NULL:2014/08/04(月) 20:17:31.01 ID:uZ8lQfee
7.0ってXPで動いたっけ?
サポートされるオペレーティング システム
Windows 2000, Windows NT
質問です
SQLSERVER2012EXPRESSをアンインストールしたのですが、
Cドラのユーザーフォルダの中に「MSSQL$SQLEXPRES」というユーザーが残ってしまい削除出来なくなってしまいました
どうやれば削除出来るのでしょうか?
>>223 アクセス権限が無くて消せないのなら所有権取得してゴニョゴニョすれば消せる
>>224 管理者ユーザーから削除しようとしても無理でした…
そもそもこんなユーザー作ってないんですが、アンインストール時の手順ミスとかその類いの原因でしょうか?
226 :
NAME IS NULL:2014/08/07(木) 00:49:51.44 ID:ltBY+ZDG
>>225 横だがサービスの実行アカウントだ
ASP.NETの実行ユーザーとかもそういうの作成される。
居なくなったユーザーのは224の言う通り所有権を取得すれば消せる
まあフォルダが残ってるだけならあんま影響ないから無視しといても
スレ違いかもしれないけど、わかる人教えてください。
イメージ:クライアント--ルータ--(Internet網)--ルータ--SQLServerマシン
SQLServer2012へインターネット経由(サーバ側NAT環境)で
接続したいと考えているんですけどSSL等で暗号化することは可能でしょうか?
また、その場合、サーバ側ルータで必要なポート開放はSSLのみで大丈夫でしょうか?
>>225 そういうのは管理者権限だけじゃ消せないべ
管理者権限で所有権を取得してからアクセス権限で消せるようにしてから消すんだよ
231 :
227:2014/08/08(金) 09:10:14.90 ID:???
>>228 多数のユーザから接続することを考えているので、
クライアント側設定が複雑になりそうなVPNは避けようと思っています。
>>229 SSLのポートはHTTPS(TCP:443)です。
デフォルトのポート1433と同じということは、
サーバ側ルータのNATテーブルには、
グローバルIPアドレス→ローカルIPアドレス
変換元ポート:TCP/443→変換先ポート:TCP/1433
のような記載をすれば問題ないでしょうか。
443のポートを使ったからって自動でSSL暗号化されるわけじゃないでしょ
>>231 これから作るアプリなら、IISをかまして3層構造にする方がいい。
>>226 >>230 消せました、ありがどう
これって、
SQLSERVER入れる際にサーバー使用者として専用ユーザーが作成され、
アンインストールしたらSQLSERVERは全部消えるけど専用ユーザーだけ残っちゃう
っていう毎回発生する事象って認識でいいですか?
つかWindows側の問題だったんですね…
改めてスレ違いすみませんでした
>>234 セキュリティ強化のために専用ユーザとグループを作ってるんでしょ
古いバージョンはLocalSystemだけで単純だったんだけどね
Windowsのアクセス権限は複雑怪奇でちゃんと理解して使ってるヤツは少ないんじゃないのか?
なんであんな設計になったんか謎だよ
>>231 SQLServerが1433でSSL/TLSも聞いてくれるって、なぜ思わないの・・?
433のことは忘れろ(笑)
238 :
NAME IS NULL:2014/08/09(土) 10:38:15.64 ID:fHrSL+3E
同じだね
レス数が6でスレ番号UPするよりは建て直しの方が良い様な
240 :
NAME IS NULL:2014/08/20(水) 10:39:37.71 ID:4cvw8JQq
保守
242 :
NAME IS NULL:2014/08/29(金) 23:41:21.89 ID:Ofh50Y0r
質問っすよ
リモートPCからストアドのスクリプト(EXECUTE)を作成したい。
GUIではなくて、sqlcmdなんかをVBAで連続で発行です
そういうコマンドありますか?
よろしくでーす
243 :
NAME IS NULL:2014/08/30(土) 01:02:47.53 ID:39pGGgY4
>>242 質問の意図が分かりにくすぎる
EXECUTE(実行)なのか
スクリプトファイルを作成するのか
sqlcmdの実行なのか
SQLの実行なのか
ストアドの作成なのか
ストアドの実行なのか
ごめん
ssmsのGUIでCreate ProcedureやDropとかのDDLを作れますよね。
あのメニューの最下段にあるEXECUTEを選ぶと表示される内容が欲しいのです。
※なのでDDLでは無いです。
ストアドが100本近くあるから、
VBAで上のEXECUTEを取り出すsqlcmd(-oオプション)を発行、クライアント側の指定したフォルダにそれを出力して、
それをまた一括加工(パラメータにデータセット)してからsqlcmdでプロシージャを実行して、結果をクライアント側に出力する。
その実行結果を自動解析する流れです。
なぜ自動化するかというと、パラメータも含めて仕様変更が激しいので、その都度全チェックしておきたいからです。
※いつ何がどう変更されるのかすら分からない
宜しくお願いします
245 :
NAME IS NULL:2014/08/30(土) 22:08:49.83 ID:39pGGgY4
>>245 ありがとう!
すごい(笑)
運用の前の製造と試験中に使うんですよ
ツールを製造者にも使わせて効率良くしたいなと思って。
247 :
NAME IS NULL:2014/09/01(月) 08:13:28.79 ID:O3pddgdX
248 :
NAME IS NULL:2014/09/03(水) 20:32:12.62 ID:0t9jRBQp
仕事で詰まっているので質問させてください
C#でストアドを呼び出します。
その後、Sqlserverのストアドの戻り値を
呼び出したC#で受け取る方法はありますでしょうか?
コーディングレベルで教えていただければと思います。
具体的に話しますと、
ストアドで複数テーブルをDELETEしたりINSERTしたりします。
どのテーブルでどのような処理(DELETE、又は、INSERT)で異常終了したかを知り
その情報をC#で受け取りたいです。
ただ、ストアドは正常系のリターン0、異常系のリターン1の2択しかなかったような気がして
無理なんでしょうか?
249 :
NAME IS NULL:2014/09/03(水) 21:31:03.43 ID:BOAb4gdw
>>248 @@ERROR使うか普通はTRY/CATCHで情報取得して返すんじゃないの
というかエラー処理してなかったらException起きなかったっけ
250 :
NAME IS NULL:2014/09/03(水) 21:34:22.30 ID:BOAb4gdw
ってマルチかよ
251 :
NAME IS NULL:2014/09/03(水) 21:35:52.22 ID:0t9jRBQp
トライ/キャッチを処理ごとに入れてキャッチの時にリターンコードを
処理ごとに区分分けしてセットするようにしたんですが
そこでセットした値も
C#で
int ret = this.connectio.ExecuteQurey(xxxxx)でretにセットしても
正常系は1、異常系は2
セットした値は反映されず、必ず固定でどちらかになります
252 :
NAME IS NULL:2014/09/03(水) 22:13:39.75 ID:BOAb4gdw
>>251 ExcueteQueryってなんのメソッドだよ。JDBCか
自作クラスか
ストアドの戻り値なら別スレで回答貰ってるように出力パラメータ拾わないと
ミドルウェアがADO.NETで
EexecuteNonQueryならメソッドの戻り値は影響を受けた行数だぞ
253 :
NAME IS NULL:2014/09/03(水) 22:34:18.64 ID:0t9jRBQp
>>252 なんとなく見えてきました
ありがとう
でも
そこまでスキル高くないので
そこコーディングが昼間わからなかった
ストアドで出力パラ用意
ここまではなんとなくわかるのですが
C#で引数指定してストアド呼び出すとき、入力引数なら普通にかけるけど
出力引数の書き方がわからずビルドが通りませんでした
そのように出力パラメータは記述するのでしょうか?
C#とストアドの両方を教えていただけないでしょうか
今週末が開発の〆日なのでなにとぞご教示お願いできませんでしょうか
254 :
NAME IS NULL:2014/09/03(水) 22:37:50.28 ID:0t9jRBQp
家なので正確なロジックは書けないですが
C#だと
ExecuteQuery(Sqlxxxxx、"IN_PARA" sysdate)
INはこれでいけてます
OUTパラの場合
同じように買いても実行時、引数が設定されてませんとエラーになります
OUTパラなので引数を設定するのではなく
ストアドの戻り値をいれたいのですが・・・
255 :
NAME IS NULL:2014/09/03(水) 22:57:24.38 ID:BOAb4gdw
256 :
NAME IS NULL:2014/09/11(木) 19:50:29.02 ID:eA8o8bEw
SQL Server Express利用して2台だけ構成のシステム組むときって
やっぱ1台はWindows Serverを買わないといけないの?
>>256 何言ってんだ?
Linux使いたいの?それとも7とか8を使いたい?
動作要件見ろよ・・と。
258 :
NAME IS NULL:2014/09/11(木) 21:18:30.81 ID:eA8o8bEw
>>257 ([A]Windows 7 Enterprise)------[LAN]--------([B]Windows 7 Enterprise)
|
(SQL Server Express)
こーいった使い方はありなのか?ってこと、それとも[A]はやっぱ
たかが2台でも、ライセンス上Windows Server OSを買わないと
いけないのか?
259 :
NAME IS NULL:2014/09/11(木) 21:42:01.70 ID:qLk3eX5b
システム要件を見てその質問だとこの先のMSDNについていけないぞ
261 :
NAME IS NULL:2014/09/11(木) 22:25:26.40 ID:qLk3eX5b
そのWindows 7 EnterpriseのEULA読めとしか言えないな
一般的にMSはクライアントOSのサーバとしての利用は認めてない
例外的に認められるサーバはEULAに書いてある
動くか動かないかで言えば動くけどな
システム要件とライセンスは別の話だ
2台だけ構成のシステムって、開発用の環境なんじゃ?
SQL Server Expressでは無く、フリーのSQLをインストールする場合でも、これに触れるのかな?
開発機じゃなければ、Server必要。
で、Server買ったら、CALも計算する必要がある。
267 :
NAME IS NULL:2014/09/12(金) 08:21:52.23 ID:IwVUnqdj
RDBMSって広義でファイルシステムって取れないのかね?
MySQLやPostgresqlなどFreeのRDBMS使ってもこれにひっかかちゃうんだよな。
しかし、ピアツーピアで2台繋ぐだけでも一方はサーバ買わなくちゃ
いけないなんてちょっと理不尽だな。
>>265 触れるだろうな。
ただ、どこまで厳密に運用するかは MS の胸先三寸だから、MS に聞くしかない。
sql server management studio2012でうまくwindows認証ができません。
sql server managementstudio2012をつかって、
ローカルにDBを構築したいのですが、
インターネットに接続されている状態ならば、windows認証でログインできるのですが、
インターネット未接続の状態ではログインできません。
インターネットに未接続の状態で、
windows認証でログインできる方法はありますか?
わかりづらい文書ですいません。。
>>269 せめてログインできないときに出るメッセージぐらい書け
windows認証でログイン出来るかどうかと、インターネット繋がってるかどうかは無関係だが
ためしにSQL Server認証だとログインできるのか?
インターネット未接続だとTCP/IPそのものが無効になってるんじゃないか?
それかドメインコントローラがインターネット経由でしかつながらないとか
ファイアウォールじゃね?
あれ、接続状態でprofileがころころ変わるようになってるからな。
もっとも、インターネットに繋がってる状態(パブリック)だけ、SQL Serverが登録されているってのが意味不明だけど。
普通は、ドメインかプライベートでしか有効にしないはずだし。
269です。
いろいろ試行錯誤したらログインできました。
失礼しました。
さて、ログインはできたのですが、
新しいデータベースが作成できないという問題がでてきました。
オブジェクトエクスプローラのデータベースで右クリック⇒新しいデータベースを選択し、
データベース名にTESTDBと記入し、
OKボタンを押下したのですが、
データベース”TESTDB"の作成に失敗しました。(Microsoft。SqlServer.Smo)
追加情報:
Transact-SQL ステートメントまたはバッチの実行中に例外が発生しました。
(MicrosoftSqlServerConnectioninfo)
A file activation error occurred.The physical file name "TESTDB.mdf" may be incorrect.Diagnose
and correct additional errors,and retry the operation.
CREATE DATABASE failed.Some file names listed could not be created.Check related errors.
(Microsoft SQL Server、エラー:5105)
というエラーが起きました。
saでログインすれば、
新しいDBを作成できるとあるサイトで記載があったのですが、
saでログインしても、
上記のエラー文が起きてしまい、
DBが作成できません。
273 :
NAME IS NULL:2014/09/15(月) 02:44:10.53 ID:SbRlWm6w
>>272 てめぇ、回答してくれた人に何の報告もなく
「試行錯誤したらログインできました。」で済ますなよ。
どう試行錯誤したのか少しは報告して感謝を表わせよ。
スキル以前に人間性に問題あるんじゃねーの?
275 :
NAME IS NULL:2014/09/15(月) 21:33:15.16 ID:c9KudCWP
40代はだいたいそうだな 己の目的のために他人を利用できるだけ利用する
それで自分が利を得ればそれでよし おしまい できなかったら相手を罵倒したり悪口・陰口言い触らしたり
あぁすまん スレと無関係だったな そもそも初心者だてのに、マニュアルやプロシージャすら精読してないだろ
こう書いてあるからそうしたら出来ない 教えろ この繰り返し 一旦PC初期化するところから始めないとダメなケース
277 :
NAME IS NULL:2014/09/16(火) 09:28:38.87 ID:f4Wsk25V
T-SQL整形で使えるツールを教えてください。
・ターゲットはストアドプロシージャ(create procedure)
・会社なので整形時にネット接続はしない。
・コーディング規約があるので不容易に別行を結合させない
・最大3000行
・連続したクエリ(SQL)も整形
宜しくお願いします。
今のところpoorのライブラリ改造か自前作製かで迷ってます…
今のVisual Studioってデータベースプロジェクトって無くなったんだっけ?
無償以外のエディションには残ってる?
すみませんテーブル設計について相談させてください
マスターを作りたいと思った時に下記のような状況の場合、
どういった設計が望ましいのでしょうか?
例)
得意先ID,コード1,コード2,コード3...
A,A1,A2
B,B1,B2,B3
C,C1
コード1についてはどこの得意先も共通で持っており、
コード2,コード3については得意先によってある場合と無い場合があります。
増えることは無いと想定した場合、
1.全てのカラムを持ったテーブルを作成する方法
2.コード1までを共通マスタとし、コード2,コード3は各得意先別にそれぞれテーブルを作成する方法
があると思うのですが、皆さんならどんな設計をされますか?
また、2の場合だと得意先によって参照するテーブルが異なる為、
プログラム内で得意先IDがAなら〜Bなら〜と指定しなくてはならずどちらも問題があるように思います。
何か良い方法はないでしょうか?
>各得意先別にそれぞれテーブルを作成する
>得意先IDがAなら〜Bなら〜と指定
イメージしてるレイアウトがわからん
得意先ID,コード1
得意先ID,コード2
得意先ID,コード3
って感じにコードごとにテーブル作って、コード2が欲しいときはテーブル2を見るって話じゃないのか?
で、どっちが良いかって話ならケースバイケース
俺ならシステム的な都合じゃなく、そのコードの意味合いを考えて同一テーブルか別テーブルか決める
って、ここ設計スレじゃないのか
>>282 > どちらも問題があるように思います。
1 の方の問題は書いてないみたいだけど?
こんなところで質問するレベルなら素直に 1 でやりなさいよ。
>>283,285
すみません書き方が悪かったです”コード”ではなく”項目1””項目2””項目3”…としてください
製品マスタと考えて頂いて、1レコードで1つの製品になっています
なので、実際には製品名などの情報も持っている為複数レコードにすると冗長になってしまうと考えました。
得意先Cの場合、必要な項目を取得するために一つのテーブルだけ参照すればよいのですが、
その他の場合、得意先Aなら共通マスタ + 得意先Aテーブルを参照しないといけなくなり、それをプログラム内で
if 得意先ID == A {
SELECT * FROM 得意先Aテーブル
}
if 得意先ID == B {
SELECT * FROM 得意先Bテーブル
}
となってしまうのではないかと思うのですが、その場合得意先が増えるたびに
コードの修正が必要になってしまうというのが、問題ではないかと思います。
1については、『増えることはないと想定する』と書きましたが、
万が一増えた場合得意先CからすればNULLのカラムが増えるばかりで冗長ではないかと思いました。
287 :
NAME IS NULL:2014/09/26(金) 21:19:23.95 ID:DIJrmyp8
俺だったら「得意先ID」を格納するカラム、コード1・・・コードnはXML型にして2カラムで済ませるな。
>>287 想像もしなかった回答で勉強になります
使用しているのがSQLServerなのですが、XML型というのを見たことがありません。
テキストで保存する?という事でしょうか
項目2以降は別テーブルと結びつくキーにはならないのですが、
参照する機会が多数あるので、できれば冗長な部分は省きつつ修正や直接コードに記述することなく
スムーズに参照できる方法があればと思っております。
設計に対する知識が少ないのでいい方法が思いつかないのですが、
他にも方法があれば教えて頂けるとありがたいです。
>>286 > 万が一増えた場合得意先CからすればNULLのカラムが増えるばかりで冗長ではないかと思いました。
気にしなくていいよ
どんな大会社にお勤めか知らんけど、製品マスターが一億レコードとかないでしょ
290 :
NAME IS NULL:2014/09/26(金) 22:04:54.61 ID:DIJrmyp8
>>288 > 使用しているのがSQLServerなのですが、XML型というのを見たことがありません。
なるほど SQL-Server XML でググるとかもやりたくないわけね
いちぬ〜けた
なんだか良くわからん
得意先別に製品構成が変わるのか?
だったら製品マスタに得意先コード入れれば済む話
IDの付加単位とかによって考慮点とかいろいろあるが
得意先マスタ
得意先ID,得意先名,etc
得意先別製品マスタ
得意先ID,製品ID,製品名,etc
製品構成マスタ
(得意先ID),製品ID,(項目NO),項目
こんな感じか
項目数が固定なら得意先別製品マスタと製品構成マスタは一つでいいけど
最大数が決まってるけど可変っていうなら分けとく方が良いかもしれん
293 :
NAME IS NULL:2014/09/26(金) 22:28:13.25 ID:DIJrmyp8
>>292 >だったら製品マスタに得意先コード入れれば済む話
「製品」と同じで「得意先」も増減あるんでねーの?
>>293 得意先の増減がどういう意味で言ってるのかわからん
普通の意味なら、当然あるだろうけど、それが何か?
得意先増減してもテーブルを作ったり消したりしなくていいように
>製品マスタに得意先コード入れれば
って話だろ
質問なのですが、MS SQL Server をノートパソコンにインストールして動かせますか?
業務で使うわけではなく、独学で操作を覚えるのに使う目的です。
今、使ってるのは古くて安いPCなので、インストール自体ができなくて今度買い換えるつもりです。
MS SQLServer Expressは無料です。
開発・検証用であれば、安くてフル機能で利用できるDeveloper Editionという選択もありです。
299 :
279:2014/09/30(火) 06:21:28.09 ID:???
自作しました。
SQL整形機能て標準搭載に欲しいですね。
PASSJはなぜ無くなったのですか?
SQLライセンスの購入の仕方が良く分からないので教えて下さい。
Web機能を台数制限なしにイントラネットで提供する場合、サーバが1台で
4コアシングルCPUであればコアライセンス2×2=4コアライセンスが
必要になりますよね。
その後、CPUを交換またはサーバそのものを買い替えてCPUが6コアとか
8コアになった場合、”追加”で必要な分だけライセンスを買えるのでしょうか?
新規の場合は最小4コアで2コア単位ずつ買えるので問題ないのですが手元の
サーバが4コアで、取りあえず動かしてみて運用中処理がもたついたらサーバの
増強か買い替えを検討しているため追加で必要分だけ買えないとなると困ったなと。
>>301 真面目に知りたいなら、営業さんに聞くべき
レプリでサブスクライバのテーブルに主キーが必要になるのて、なんでですか?
保守
中小零細企業(従業員30人ほど)のIT化を相談されたのですが、皆様ならどのようなシステムを
構築されますか?ネット環境はありました。
全てMicrosoft系で構築を望まれてましたのと、やりたいことは請求書や帳票の発行が出来たら
良いなとの要望でした。
普通にAccessで良いんじゃないの?ですかね、それともSQL Server のExpressあたりでしょうか。
すみません、くだらないご相談で。でも意外にこんな案件多いんですよね。
業務パッケージ買って終了
306 :
NAME IS NULL:2014/10/08(水) 15:41:52.11 ID:5Gfd+Heq
そうだね。それが一番品質高くて安く済みそう。
>>304 とにかく安くなら Excel + レポートツール でもいいかも
出来たら良いな レベルでいきなし SQL Server 持ち出したら嫌がられるんじゃね?
中小零細30人規模って舐めてると思うし、請求書や帳票の発行って一口に言っても、中には特殊な処理してる
なんてのはザラだしなあ 業務内容キチンと調べてからじゃないと、うかうか提示はできないんじゃないのかな
クラウドサービス薦めてみたいところだけど、ネット死んだら業務止まるのも怖すぎるよな・・・
マルチユーザー、バックアップ、将来のバージョンアップ、最適化、セキュリティ考えたら普通にACCESS は無いな
でもサーバー立てて誰が管理するの?って感じするけど。じゃあクラウド?
セキュリティ以外はaccessでいけんだろ(笑)
>>310 SQL-Server の localdb でいいんじゃね?
バックアップさえちゃんととれてりゃ管理とか特に要らないし
会社の規模は従業員数関係ないけどな
正社員が20人くらいで売上1000億近い会社も世の中にはあるわけで
そんな会社はIT予算を年間何十億もかけてるし
話はそれたけど、どの程度金がかかるのか教えてあげて
相手の様子を見るが先じゃないかな?
親身になって考えてあげたのにパッケージ製品の価格と比較してくる
エンドユーザなんてやまほど居るからね
315 :
NAME IS NULL:2014/10/09(木) 17:06:35.38 ID:7NGox5zH
だから、零細相手ならパッケージ薦めてやれって
自社構築なんてやろうとしても予算無いから
なんでACCES or SQL Serverみたいな話になるのかわからん
フロントエンドとバックエンド分けて考えられないのかね
317 :
NAME IS NULL:2014/10/09(木) 23:53:21.85 ID:uTU155B5
フィールドが256越えたらAccessはエラー吐くんじゃなかったっけ?
この手の案件でフィールド数が 100越えるような設計する奴は、この業界に向いてないから転職した方がいいと思う
すみません。
SQLServer 2008 R2 EXPRESS SP2インストール時に、
最初のセットアップルールで必ず“重複した i/o 処理を実行しています。”と出でエラーになり、
進まないのですが、何が原因かわかりますでしょうか。
>>316 中小零細でMicrosoft製品を希望
ExcelとAccessをベースにしたパッケージで決まりだろ
>>314 何をイラついてるのか知らんけど、そんな揚げ足とるなら
そもそも零細企業なんていう定義は法律上存在しないけどな
とは言え、事業規模で判断するなら
あなたの言う零細企業レベルの会社はパッケージ以外の選択肢は
ないと思うけど
>>322 > 何をイラついてるのか知らんけど、そんな揚げ足とるなら
自分が何を書いたのか忘れたのかよ
> 正社員が20人くらいで売上1000億近い会社も世の中にはあるわけで
どっちが揚げ足だか
しかも零細って書いてあるのにバカすぎ w
>>323 あなた熱いね
「中小零細企業(従業員30人ほど)」って書いてあるだけで事業規模は書かれてないけど?
さっきも書いたけど「零細企業」の定義は存在しないから
あるならソースよこせよ
>>324 零細企業に定義はないから、売上1000億近くで、IT予算を年間何十億もかける会社でも俺は零細って言うぜ
ってか?
まあ、好きにすれば w
従業員一桁くらいで
SQLServerの話をお願いします。
あなた達の企業観に興味ないです。
>>324 一般的に従業員30人なら小企業だし、零細とついたら事業内容も売上げも小規模だよ
BCPコマンドでセレクトした内容UTF8のcsvに吐かせたいんだが、そんな方法あるの?
-c -C 65001だったかで出来るって情報見つけたが、どうやらこれは2005までの話みたいだし、
そもそもMSがUTF8サポートしてねーよって言ってる。
上司は「イヤ、方法があるはずだ」の一言でひたすらググれとしか言いやがりゃしねえ・・・
どーしろと・・・
MSのサポートに聞く
>>329 普通に吐き出せるなら、そのcsvファイルを文字形式変換すりゃいいだろ
>>329 ググったら2010年の記事で2008r2対応されてると示されてるが、実際に試したのか?
あそこまで具体的にコマンド列挙してるんだから、当然試してるよな?
>>333 > ファイル数が1万個以上あるから却下。
スクリプトも書けないのか?
そもそも、SQL-Server のバージョンも書かないような奴はスルーでいいかな
>>334 2008R2だよ。スクリプト提案したが時間かかりすぎるからダメだとよ。
>>333 却下なんて、質問してんのにやけに上から目線なんだな(笑)
こんな輩に答えてやる必要ない
どうせ何言っても、そんなことはとっくにやった
とか言われちゃうからなあ
軽くググった限りでは SQL-Server 単独だとダメみたいだし、外部で変換するだけだから、これ以上調べる気にならない
上司を説得/言いくるめるのは
>>329 の仕事だしね
>>338 傲慢な上に後出しでチョロチョロ条件つけられてもな
>>338 お前はネットでもリアルでも人を不快にするカスなんだよ。
ろくにネットで質問すらできないクソ社員に仕事を任せようと努力なさる上司には頭が下がります。
まあ、結論出てるし、スルーでいいでしょ
346 :
NAME IS NULL:2014/10/12(日) 22:12:45.72 ID:d4pv4tMW
これw うわべは取り繕ってるけど腹の中で思ってることが具現化されてるようなやりとりでおもしろい
質問者が悪態ついても質問者の損にしかならないのになんでやるんだろうねw
初歩的な質問ですみません。
PKは主キー、IXは外部キー?、FKは外部キー制約?であってますか?
あと、FKはテーブル間の整合性を保つのが主な利用で良いですか?
FKがA.code=B.codeの時、Aにだけ行追加はエラーとなる。
宜しくお願いします。
全くの初心者です。
2014expressって、まだ自習書が揃ってないのでしょうか。
2012の自習書やDB作成スクリプトも使えますよね?
2012どころか、2000のDBスクリプトも使えるぜ。
SQL serverってPC一台しかなくても、自分でデータベース作ったりできますか?
なぜできないと思ったのかを教えて欲しいぐらい。
>>352 だって、ServerにはClientが必要だと思ったから(;´Д`)
>>353 どうもありがとう。
>>354 一つの PC に Client と Server の両方を入れられるよ
>>354 アカウントとパスワードは絶対忘れないようにな
>>356 Windows認証ならDBのユーザとか忘れても大丈夫
>>354 お前の右手がクライアントだよ
わかるよな
>>359 できねーよ、と言いたいの?
AD組んでなくたってローカルの認証が効くんだが。
>>360 >>351は理解できないだろ
興味本位でSQL server認証でアカウント追加してく可能性もあるわけ何だけど
AD使おうがアカウントとパスワードを控えるのは基本中の基本だよ
SQL Serverってたしか今のデフォルトでインストールすると
Windows認証のみ有効じゃなかったか
必ずデフォでやると確信できてるんですねー
すんごいわー
初めて触るものでよく分からなかったら、
取りあえずデフォルトで突き進むのはこの世界のたしなみというか、よほど性格が悪いんですかねぇ・・。
SQLServerはデフォルトでもそこそこ使える点も売りなんだしさ。
SQL Server認証のみなんて出来ないんだから別に変なことは言ってないんじゃね?
Windows認証のユーザーパスワードすら管理できないならそもそも論外だろうし
質問内容からして1台完結かつ初心者なのに
ADの話とかデフォルトをいじる話とかなんなの
>>367 初心者にユーザ忘れても良いからとか教え込むのは間違いだろ(笑)
つっかかってるの全部同一人物か。
忘れても大丈夫って言ってただけだろ。
デフォルトがWIndwos認証になってるのは
なまじパスワード運用したほうが
セキュリティ的に問題があるってMSの方針だろ
SQL Serverに限って言えばむしろsa運用知らない方がいいかも。
今のSQL Serverはユーザとログインとスキーマの関係がややこしいから
とりあえずSQL Server初めてならデフォルトのWindows認証理解してからSQL Server認証覚えればいいよ
それまでDBユーザとかいう概念は忘れていい
スキーマとユーザが別物だってことだけ気に留めとけばOK
> 興味本位でSQL server認証でアカウント追加してく
と確信できてる方がすごいわ w
>>371 dbo以外でスキーマ作るメリットってなんかあるのか?
>>372 >可能性もあるわけ何だけど
ん?ん?ん?
>>373 ユーザ数が増えるとロール使うとか
ユーザDB用意して自由に使うとか
>>373 WEBアプリ(インターネット)に見られていいスキーマと
そうでないものを分けるとか。
ガキのケンカかよ(´・ω・`)
楽しそうでなにより
>>377 お前はバカか
どっちの可能性もあるだろ
>>351と
>>354を読めば初心者なのは分かるし、
T-SQLの話じゃなく、SQLserverインストールなんだから、いろいろ設定を触るの可能性あるだろ
初心者相手にする時は何するか分からんから、デフォだろうがアカウントとパスワードを控える様に説明しとけ
可能性を言い出したらキリないわな w
だいたい、相談してきた人間そっちのけで何を争ってるんだよw
>>380 アカウントって何の事を指してそう言ってるの?
指定したパスワードは覚えておけとか、DBうんぬん以前の基本中の基本だわな
ところで、Windows認証で管理者権限があればログインのパスワード変更できるわけですが
古いパスワード知らなくても変更できるぞ
一人が医用にこだわってるだけのようだが。
「初心者がありとあらゆる設定をする可能性を考慮しないと・・」って必死になってる。
あちこちのスレで突っかかって玉砕してる人と同じにおいがする。
インサート文を大量に書いたクエリがあるんだけど
実行途中でキー違反エラーとか出た場合ってデフォルトだと
そこでクエリの実行が止まってしまうんだけど、これを無視して
次の行からクエリの実行を継続させることってできますか?
ロールバックされてるだけとか
MSDE2000からSQLExpress2014に移行したいんだが
ググってみると直接の移行は出来ないみたいのことが書いてあるんだが
やっぱ一度2008を噛まさないとダメ?
直接の移行ってどういう事?
そもそも2000の動作対象OSと2014の動作対象OSがかぶってないから
そりゃ直接アップグレードなんて保障されないだろ
392 :
386:2014/11/09(日) 10:52:45.20 ID:???
>>387 レスありがとうございます。特に止まったりはしないんですね。
もしかしてステートメントをセミコロンで区切って無いからかも?
ちょっと会社行かないと試せないんですが…
>>393 DTSパッケージでも使ってない限り、簡単なDBだったら難しいことになったことはないなぁ。
外部結合で(+)とか使っちゃってると・・超面倒。
MSDEを使うことはもうないだろうけれど、(+)使えたんだね。
オラクルの方言としてしか認識してなかった
>>395 Oracleのシェアを切り崩すために方言すら対応していた泥臭さがあるね。
2008かどっかで仕様から外されて、その役目は終わったと。
Oracle:任意の方に(+)
SQL Server:必ず残すほうに(*)
どっちも方言
PostgreSQLのpg_dumpのようなことはできますか?
無理です。
bcpでがんばってください。
>>398 DB右クリック
→タスク
→スクリプト
でスキーマだけだったり、データ(INSERT文)付きで出力できるけど、これでいいんだろうか。
401 :
398:2014/11/11(火) 10:06:25.45 ID:???
>>399-400 コメントありがとうございます。
自分が探せ出せないだけないんじゃないかと思ってたんですが、そうですか、できませんか・・・。
へーこんな機能あるんだ
去ってしまったのか、若人よ。
本番環境で、データコレクション使ったパフォーマンス管理してる方いますか?
oracleしかしらないので、statspack的なものを探してこれにたどり着いたんだけど、使う上で気をつけた方がいいこととかあったら教えて下さい。
406 :
NAME IS NULL:2014/12/03(水) 04:26:30.16 ID:uHpvbzaP
教えてください。お願いします。
win7-64bitを使っています。
見よう見まねでプログラムの勉強をし、内部でdata.mdfファイルを使うプログラムを作ってみました。
試しに実行すると、「SQL Server への接続を確立しているときにネットワーク関連
またはインスタンス固有のエラーが発生しました。サーバーが見つからないかアクセス
できません。インスタンス名が正しいこと、および SQL Server がリモート接続を許可する
ように構成されていることを確認してください。」というエラーが出てしまいます。
いろいろ試したところ、事前に、[winのスタートボタン]-[Microsoft SQL Server 2012]-
[SQL Server Management Studio]というのを実行し、いちどサーバーへの接続というのを
やった後なら、ちゃんと動くことがわかりました。
たぶん、この「サーバーへの接続」というのをwindows起動時に自動でやってもらうような
設定ができると思うのですが、どうすればいいでしょうか?
407 :
406:2014/12/03(水) 04:30:52.83 ID:uHpvbzaP
↑続きです。
お恥ずかしながら、私のPCには、スタートボタンにあるプログラムをみるかぎり、
MicrosoftSQLServerの2005と2008と2012の3つがインストールされているみたいです。
以前に別の本を見て真似して作ったプログラム(mdfファイルを使います)は、特に
何もしないでも動くので、たぶん別のバージョンのSQLserverによってmdfファイルが動作
してるんだと思います。
今回のは2012で動くようにしてしまったみたいです。
2012も、何か最初から接続してくれたらな、と思います。
これからSQLSERVERについても勉強しますので、とりあえず緊急避難的に、2012の接続を
自動でやれる設定方法を教えてください。
お願いします。
>>407 構成マネージャ
もっと簡潔な日本語を。
>>406 >[SQL Server Management Studio]というのを実行し、いちどサーバーへの接続というのを
>やった後なら、ちゃんと動くことがわかりました。
まずこれが勘違いだと思うが
ManagementStudioでつないだのはどこでどうやってつないだんだ?
エラー出たのはどこへどうやって接続しようとしたんだ?
そのレベルだと解決するの難しそうだし、OSから入れ直した方が早いんじゃね
さすがにOS入れなおしは極論
>>406 mdfはSQL Serverが使っているファイルで直接プログラムから操作するもんじゃないよ。
プログラムはSQL Serverへ接続して間接的にmdfファイルを使用する。
で、そのプログラムはどの言語で作ってるのさ?
LocalDBという手もあるか
仕事でSQLServerを使うことになりそうなので、ぼちぼち勉強を始めようと思います。
SQLServerの入門書やURLなど教えていただけないでしょうか。
(とくにT-SQLのリファレンス本など)
なお、DBは初めてではありませんので基本的なSQLなどは分かっています。
よろしくお願いします。
>>413 sqlserver 自習書でググればいいんじゃね
あれが無料なのはすげーよな
浮川夫妻、谷尻夫妻みたいなもんかね
SQLServerとは関係なくて初心者向けだがドットインストールなんかも
自習サイトとして良いね。
>>413 SQL Server 2012 の教科書
ググれ
case kbn
when 1 then 'あ'
when 2 then 'い'
else 'う'
end as kbnName
と戻りを全角としたときkbnNameが「?」となります。
全角での値を正常に取得したい場合は、
どのようにしたらいいのでしょうか。
>>420 select
case kbn
when 1 then 'あ'
when 2 then 'い'
else 'う'
end as kbnName
これでも?になるのかな。
全角が化けたことはないが。
>>413 基本的な SQL を理解してるなら、SQL-Server インストールして試してみればいいじゃん
>>420 みたいに照合順序とかちょっとしたところではまりやすいし
照合順序…?
425 :
420:2014/12/08(月) 12:29:06.86 ID:???
>.>421-424
レスありがとうございます。
>>422 化けてしまいます。
[tbl01]
kbn, testName
-----------, ----------
1, ああ
2, いい
3, うう
4, ええ
5, おお
[Query]
select kbn, testName,
case kbn
when 1 then 'あ'
when 2 then 'い'
else '99'
end as kbnName
from tbl01
[結果]
kbn, testName, kbnName
-----------,----------,-------
1, ああ, ?
2, いい, ?
3, うう, 99
4, ええ, 99
5, おお, 99
と全角が「?」となってしまいます。
書籍やネットでサンプルを見ても
特に定義の指定してるような記述もないようなので
ちょっと煮詰まってます。
単純に
select test = 'てすと'
としても
test
----
???
となってしまいます。
環境的な問題かとも思い、
いくつかの環境で試しても同じ結果で…。
長文すいません。
>>425 「'あ'」を「N'あ'」で行けるんじゃないの?
427 :
420:2014/12/08(月) 12:42:56.18 ID:???
>>426 いけました!
これをヒントに調べてみます。
ありがとうございました。
428 :
420:2014/12/08(月) 14:15:53.83 ID:???
なるほど
>>423 さんの言われている「サーバー照合順序」が問題でした。
データベースの「サーバー照合順」を
SQL_Latin1_General_CP1_CI_AS → Japanese_CI_AI
に変更後、問題解決しました。
この辺りの動きを理解していないので
いまから勉強したいと思います。
皆様ありがとうございました。
>>428 デフォルトは、Japanese_CI_ASだから
無理やりデフォルトと変えたのか
>>429 > デフォルトは、Japanese_CI_ASだから
2012 と 2014 の Express は Latin だよ
>>430 それは何かの間違いでしょ
そんなとこ変わったら大混乱だよ
英語版と日本語版の違いだったり。
>>432 今は環境が無いんで明日会社で確認してみる
もしそうだったら笑えんな
>>434 よくよく考えたら、SQL-Server 単独じゃなくて、Visual Studio インストールした時に一緒にインストールしたんだった
そのせいなら、スマン
明日、仮想環境で単体インストールしてみる
>>435 Windows ロケールが日本語になってない状態でインストールしたとかじゃないのか?
SQLServerのドキュメント見てるんだが規定値が替わったなんて書いてないなあ。
440 :
NAME IS NULL:2014/12/09(火) 00:51:48.53 ID:lj9DNJzh
質問です。
オートナンバー(IDENTITYはい)のフィールドで、
値が上限いっぱいになった場合はどうなるんでしょうか?
何回もレコードを削除したり追加したりして、常時100レコードくらいだけ
保持してるようなソフトを作っているのですが、
主キーのフィールドがこのオートナンバーです。
レコードを削除しても、とにかくこのフィールドの値はそれまでの最大値+1で
増えていくみたいなんですが、上限値になったらまた空いてる最小値から
自動的に充てられていくんでしょうか?
毎日100万件ぐらい更新したりするのかな。
>>437 > Windows ロケールが日本語になってない状態でインストールしたとかじゃないのか?
明示的には変えてはない
ただ、
>>435 に書いたように Visual Studio のインストール中に一緒にインストールしてるから、一時的にロケール変えられてるとかはあるかも知れない
>>443 win7pro+2012express sp1
Japsnese_CI_ASでした
VSのCommunityって、英語版+言語パックだったはずだから
それだとどうなってるだろう
>>435はもうちょっと詳しい環境かけないのかね
>>444 マジか...
手元のマシン何台か見たが、全部 SQL_Latin1_General_CP1_CI_AS だった... orz
呪われてるのか?
・Windows 7 Professional (プレインストール) + Visual Studio 2013 Express for Windows Desktop
・Windows 7 Professional (MSDN) + Visual Studio 2013 Express for Windows Desktop
・Windows 7 Ultimate (MSDN) + Visual Studio Professional 2012
(Visual Studio は全て Update 4)
>>447 照合順序なんて気にせずにデフォで入れるしw
>>446 もしかしてlocaldb?
localdbはSQL_Latin1_General_CP1_CI_ASだったと思う。
>>450 そう、今その情報を見つけた
Visual Studio をインストールした時に特になにも気にせずにインストールしたので LocalDB がインストールされてた
単体で SQL-Server をインストールすれば大丈夫らしい
お騒がせして申し訳なかった
>>451 お騒がせしてくれなきゃLocalDBがそんな設定になってるのを知らなかったし
sa/manager使ってるだろ
ちょっと知ってる人がいたら教えて欲しいんですけど
仕事でSQLServer 2012 VS 2012 VB.NETでクラサバ開発をしてるんですが
DB、ストアド、クライアントPC、プログラムが全て同じ
違うのは社内LANとルータ経由の遠隔地のみの状態で実行すると
処理時間が10倍以上違う現象が起きてます
それで、違うのはネットワークのみなので、モニタリングソフトで見てると
サーバからクライアントに約150MBのデータ転送があります
どうもテーブルロックのselectのデータが送られて来ているようなのです
クライアントのManagementStudioでストアドを実行しても、結果タブに
データ一覧が表示されるので、サーバから送られているのは間違いないと思います
ストアドの呼び出しと結果の戻りしかアクセスは無いと思うのですが、
ストアドのselectはクライアントにデータを返すもんですか?
何かSQLServerの設定か何かが変で、そんな現象が起きてるんですか?
>クライアントのManagementStudioでストアドを実行しても、結果タブに
>データ一覧が表示されるので、サーバから送られているのは間違いないと思います
答え出てるじゃん
SELECTって書いたらそりゃあSELECTするだろ
>>456 単純にSelectして結果を変数に入れずに放置すると結果セットに返るのは仕様です。
SELECT <@変数名> = <値>するかカーソルでFETCH INTOしなきゃダメでしょ。
>>457-459 そう言う事ですか、理解しました、ありがとうございます
テーブルロックするためにselect文を発行したかっただけなのですが
それでも、何か変数で受けなければダメだったのですね
DECLARE @cnt Int
SELECT @cnt = COUNT(*) FROM table WITH (TABLOCK, XLOCK, NOWAIT)
的な・・・
ロックするためだけにselectとか、分離レベルとか知ってるのだろうか
つかLANなら150メガの不要なデータ転送してても平気な時代になったのか
スゲー時代だな
>>460 count(*)なら結果一行だけだし影響無いんじゃないの。
>>461 事前にテーブルロックしたいんだろうからselectで良いのでは
他に何かやり方ありましたけ?
TABLOCK, XLOCKよりTABLOCKXの方が良いと思うが
>>460 あ、select *をselect count(*)に変えたわけね。失礼しました〜
465 :
あ:2014/12/25(木) 19:44:21.73 ID:???
/:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::ヽ
/:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::://ヽ:::::::::::::::|
l:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::// ヽ::::::::::::::l
l:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::/:::「'ヽ:::::::::::// ヽ:::::::::::|
|::::::::::::::::::::::::::::::::::::::::::::::::::::::::::ノl:::ノ l:::::::/ ヽ::::::::|
ノ:::::::::::::::::::::::::::::::::::::::::::::::::::::/ ゙゙ ノ:::/ ,,;;;;;;,, ,,,,ヽ:::::l
):::::::::::::::::::::::::::::::::::::::::::::::/ ノ/ __,'''i: ('''__):::l
)::::::::::::::::::::::::::::::::::::::::::::::::::/  ̄ ̄ン:. :「 ̄`ヾ
1:::::::::::::::::::::::「 `┤l:::::::::::::::::l  ̄ , ヽ ̄ l
`l:::::::::::::::::::::ヽ :l li:::::::::::::/ ヽ /´ `l |
ヽ::::::::::::::::::::::\_」 lヽ::::/ .l !:-●,__ ノ /
ノ:::::::::::::::::::::::::::ノ | l `゙゙ i ,,;;;;;;;;;;;;;;;;;;;;, /ヽ
,/ ヽ::::::::::::::::::::::( l l::::::::.. /.:''/´ ̄_ソ / `ヽ
ヽ:::::::::::::::ヽ | l:::::::::::... /::// ̄ ̄_ソ / \ ヴッ!!
ヽ:::::::\| l::::::::::::::::... / :::.ゝ` ̄ ̄/ / ヽ
ヽ:::l l:::::::::::::::::::..  ̄ ̄;;'' / ヽ
l l;;;;;;:::::::::::::::.....;;;;............;;;;;;''ノ l
l l '''''''''''''''''''''''''''''''''''''' ̄l | |
http://www.youtube.com/watch?v=z2qK2lhk9O0
LAN内遅延は1msecくらいだろうが、WAN経由だと数十msec〜100msecにはなるわな。
小さいパケット数多くやり取りするアプリだと途端にデータのやり取りだけで半端無い遅延になる。
100msecなら10パケットやり取りするだけで確実に1秒余計に掛かるんだぜ!?
>>467 データのやり取りを少なくするためにストアドなんだろ
>>469 そのストアドに問題があるから、必要もないのに
>サーバからクライアントに約150MBのデータ転送があります
っていう状況になってるって話だぞ
それがLAN環境だと気にもならなかったのがスゲーって話
環境 Excel2010, SQLServer2012
SQLServerに入ってるDate型のデータをExcelにインポートしたところ、形式が yyyy-mm-dd でした。mm/ddになるようにExcel側で表示形式を選んでも変わりません。
そこでクエリにCAST()を使ってDate型のデータをDateTime型にしてインポートたところ mm/dd表示にできました。
これの原因は何なのでしょうか?
よろしくお願いします。
>>471 Excel側で日付として認識せずに文字列扱いになってる気がするな
どうやってインポートしたんだ
>この問題は、SQL OLE DB プロバイダーをデータ ソースに日付、時刻、または
>DateTime2 型列が含まれている場合は、文字列データ型を返すために発生します。
Date, Time を日付、時刻に翻訳しちゃ駄目でしょうに
>>474 > Date, Time を日付、時刻に翻訳しちゃ駄目でしょうに
機械翻訳の免責
重要:
このサポート技術情報 (以下「KB」) は、翻訳者による翻訳の代わりに、マイクロソフト機械翻訳システムによって翻訳されたものです。
マイクロソフトは、お客様に、マイクロソフトが提供している全ての KB を日本語でご利用いただけるように、翻訳者による翻訳 KB に加え機械翻訳 KB も提供しています。
しかしながら、機械翻訳の品質は翻訳者による翻訳ほど十分ではありません。
誤訳や、文法、言葉使い、その他、たとえば日本語を母国語としない方が日本語を話すときに間違えるようなミスを含んでいる可能性があります。
マイクロソフトは、機械翻訳の品質、及び KB の内容の誤 訳やお客様が KB を利用されたことによって生じた直接または間接的な問題や損害については、いかなる責任も負わないものとします。
マイクロソフ トは、機械翻訳システムの改善を継続的に行っています。
>>475 翻訳改善提案しといた。そのうちに直るかも。
>>476 その下の回避策の
日付時刻SQL Server データソースをします。
も提案した?
してないなら、提案しよう。
SQL Server データソースの列の型を DateTime に変更します。
辺りでいいかな。
>>477 全面的に改善提案しといたので、そこも直してる。
青背景の見出しがロード直後は正しい日本語なんだが直ぐに変な日本語になるな
>>470 俺からみれば、その話から「小さいパケット数多くやり取りするアプリ」の話を出してくるところがスゲーって思うよ。
>>479 さらにそこから、スライディングウィンドウの突っ込みもスゲー
どんどん遠くなる
482 :
471:2014/12/28(日) 19:48:27.26 ID:???
遅くなりましたが皆様ありがとうございました。
元々そういう仕様だったんですね。
ODBCで動いてOLE DBで動かないなんて笑えるんだが
>>480 >>467 を読み直しなよ。
> 100msecなら10パケットやり取りするだけで確実に1秒余計に掛かるんだぜ!?
スモールパケットに話を展開したことに比べれば、まるで遠くなってない。愚か過ぎるよ。
>>480 中途半端な知ったかは普通に突っ込まれて当然
アプリケーションレベルのデータのやり取りがTCPのACKの話になってるのを
本題から遠くなってないとはw
>>486 TCPのACKの話が外れてるので、関係ないって戻してるだけ
>>486 selectの結果をスモールパケットで返却するRDBMSって何?
>>488 TCPのパケットサイズをわざわざ指定できるRDBMSってあんの?
>>484 パケットが多いと問題が顕著になるって話だろ
パケットサイズを問題にしたかったのかねぇ
>>489 SQLServerにはnetwork packet sizeってオプションがある
まあこのサイズがそのままTCPのパケットサイズになるわけじゃなさそうだが
これ絞ればTCPのパケットも小さくなるんじゃね
>>490 > 100msecなら10パケットやり取りするだけで確実に1秒余計に掛かるんだぜ!?
顕著になるといってもこれはないだろ。
この内容が真であるとすれば、1秒に最大でも10パケットしか送受信できないってことになるよな。
つまり、距離が100msecであるようなサーバとの最大転送速度はパケットサイズ * 10 bpsであると。
パケットサイズが1500バイトとして、1500 * 8 * 10 = 120000 bps = 120 kbps
このくらい書けば
>>467が愚かだと分かってくれるか?
あと、スモールパケットの話だとしたことと、パケットサイズの話を出してくることはこれもまた的外れなので
知ったかは本当に勘弁してください。
スモールパケットって何?
イーサネットのフレームの1500バイト以下のパケットの事じゃないんか?
DB土方とは無縁の用語だと思う
>>491 なんかグダグタ終わったこと書いてるかと思ったら...
> 距離が100msecである
単なる知ったかでしたとさ w
ネットワーク距離とかRTTとか何でもいいんだが。
元々遅延って書いてあるのに、ネットワーク距離とか RTT とかを使いたがる奴っているよね
>>492 それって「普通の」パケットだよな
ジャンボパケット(フレーム)ってのは聞くが
そうじゃない普通のパケットを最近じゃスモールパケットって呼称するのか?
初めて聞いたわ
L2とL3の区別がついてない人は何も話さないほうがいいよ
L2 と L3 で何を語ろうとしてるんだろう w
検証したのは今年の11月くらい。検証環境は会社にあるけどやってることは単純なStream Read/Write
(1)100MBのファイルをプログラム上100MBのバッファに読み込んでネットワークドライブ上に書き込む場合
(2)100MBのファイルをプログラム上1024KBのバッファに読み込んで連続的にネットワークドライブ上に書き込む場合
で比較してみた(C#のStream使用)
比較はLAN(ping応答1msec)とクラウド(ping応答40msec)におけるネットワークドライブで各々
LANでは(1),(2)とも遅いという感覚は味わえなかったが、クラウドでは(2)の方が非常に時間を食った
もちろんSQLServerがそんな馬鹿な実装されているとは思わないけどさw
>>498 なんにたいするレスなの?
どれがL2でどれがL3の話なの?
>>500 L2やL3どころか、それより上のレイヤの話なんじゃなないのか
少なくとも、なんのバッファが100Mと1024Kなのかぐらいは明らかにしないと話にならん
>>500 スライディングウィンドウってヤツじゃねーのw
>>501 StreamのRead/Writeの単位だよ
>>500 その内容だと、TCP_NODELAY忘れてるとか。
505 :
NAME IS NULL:2015/01/16(金) 17:53:36.99 ID:dU5p/pVc
507 :
靖国参拝、皇族、国旗国歌、神社神道を異常に嫌うカルト:2015/01/29(木) 19:49:08.71 ID:L5zR7sr8
★マインドコントロールの手法★
・沢山の人が偏った意見を一貫して支持する
偏った意見でも、集団の中でその意見が信じられていれば、自分の考え方は間違っているのか、等と思わせる手法
・不利な質問をさせなくしたり、不利な質問には答えない、スルーする
誰にも質問や反論をさせないことにより、誰もが皆、疑いなど無いんだと信じ込ませる手法
偏った思想や考え方に染まっていたり、常識が通じない人間は、頭が悪いフリをしているカルト工作員の可能性が高い
10人に一人はカルトか外国人 「ガスライティング」で検索を!
......
SQL Serverって正しくインデックスを張っていると、メモリの使用量って下がる?
データの容量は全部で25GBくらいあるシステムがあって、インデックスを1つも貼ってないんだ
だから18GBしかメモリないのに、SQL Serverが12GBくらいメモリを使っちゃうんだよ
なんか、システムが全体的にもっさりしているらしい
インデックスを貼っていないと、テーブルがまるごとメモリに乗ってしまって非効率な気がする
SQL Serverってインデックス貼らなくても、そこそこ速く動くのか?
>>508 いつの時代の SQL-Server か知らんけど、最近の奴は設定してないとあるだけメモリー食うよ
実務に使うならデータベースサーバーはそれ専用にすることが多いから
インデックス貼ってないとテーブルまるまるメモリに乗るってんな馬鹿な
参照したことのあるデータは基本的にインデックスだろうが何だろうがメモリに乗るでしょ。
SQLServerがメモリを確保しすぎることが困るならそれを設定で制限させるべき。
>>508はデータベースがメモリを効率よく使ってディスクIOを減らそうとしてるのを知らないのか?
インデックス貼ってないからとか全く関係ないよ
メモリ使用量を減らしたいなら設定変えればいいだけ
Oracleだって同じだよ
>>513 >
>>508はデータベースがメモリを効率よく使ってディスクIOを減らそうとしてるのを知らないのか?
> インデックス貼ってないからとか全く関係ないよ
> メモリ使用量を減らしたいなら設定変えればいいだけ
微妙な言い回ししてるけど、インデックスを貼っていれば、メモリをより効率的に使うことにつながるよね。
メモリ使用量の上限は、たしかに設定を変えないと駄目だけど。
メモリをどう使うのが効率的と言ってるのかわからんが
インデックス分DBサイズが増える
=キャッシュすべきサイズが増える
=(使えるなら)使うメモリが増える
全データがキャッシュに乗るって前提なら、インデックスない方が
メモリ使用量は少なくて済む
そうじゃないなら、結局使えるだけ使うのだから、使う上限を設定しないとだめ
インデックスがあろうが無かろうが、可能ならデータは全部メモリに乗る
つか18Gのメモリで12Gしか使ってないなら、SQL Server以外でメモリ使いすぎてる気がするが
516 :
508:2015/01/31(土) 00:02:28.75 ID:???
データを検索すればメモリにキャッシュが乗っかるのはその通りですが、わざわざテーブルをキャッシュさせる必要ってあるのかなって思いました
テーブルをキャッシュする --> メモリからキャシュが落ちる --> IOが発生して処理測度が落ちる ってのをイメージしました。
テーブルをキャシュするより、インデックスをキャッシュしたほうがメモリの使用量減りませんか?
メモリの使用量が減る ---> キャシュ落ちが減る --> 測度落ちない
システムを安定させたいのか、自分の設計思想を認めて欲しいのかどっちだ。
前者ならメモリの上限設定をする
後者ならSQLServerのキャッシュ方法を勉強してMSに提案する
目的が不明瞭なままここに居座っても時間の無駄。迷惑。
インデックスについて勉強しよう
インデックスというのは、データの場所を知っているだけ
A列にインデックスを張った場合、インデックスはAの値毎に該当するデータがどこにあるのかを知っているだけ
select A from tablename where A = 1
とかすればAだけを取得するので速いが、
select A,B,C from tablename where A = 1
とかやってA以外も取得しようとすれば、インデックスに無いデータを読み込みにいかなければならない
つー事はインデックスだけをキャッシュしても遅いんよ
メモリ使用量は減るけどそんな仕様は糞だろう
508は思い込み喚き散らす前にクラスタ化インデックス勉強してから一昨日来やがってください
>>516 キャッシュから落ちる前提なら、実データやインデックスのアクセス頻度にもよるから
そんな単純な話じゃない
メモリ使用量が減るって事はキャッシュ落ちは間違いなく増える
たとえばインデックスを優先キャッシュしたとしても
大概の場合そのあとに実データ読む必要があるから、結局実データもキャッシュしないと意味ない
もし実データ読む必要がなかったら、そもそもそれはキャッシュに乗らないから
あとインデックスがクラスタ化インデックスだったりすると
インデックスと実データの差があんまりなかったりするけど
ちょっとインデックスに過大な期待を持ってるんじゃないかと
>>520 > 大概の場合そのあとに実データ読む必要があるから、結局実データもキャッシュしないと意味ない
一億件のレコードから 10件の検索するときにどうなるか考えてみ
> あとインデックスがクラスタ化インデックスだったりすると
知ってる言葉並べても恥ずかしいだけだぞ
SQL Serverほど情報が充実してるDBでうだうだ言ってる奴は使えないから切って捨ててもいい
>>522 シークかスキャンかの話じゃなくて
実データルックアップの要不要の話だと思うが
>>518 > select A,B,C from tablename where A = 1
> とかやってA以外も取得しようとすれば、インデックスに無いデータを読み込みにいかなければならない
インデックス使ってレコード探してから B, C 読むだけだろ
インデックス以前にデータベースの勉強した方がいいレベルだぞ w
>>524 ディスクIOが多く発生しているはずで、
それを減らすには効率的にインデックスを貼る必要がある話を
トンチンカンな520に説明しただけ。
そういう余計なことを書いたけど、
自分としては「Buffer cache hit ratio」を測れ、とだけ言いたい。
つまりキャッシュに載っていないデータのルックアップ頻度が高いことを確認してから、
それをいかに下げるか考えるべき、と。
>>527 本人か?
> (実データ犠牲にして)
どう見ても理解してるようには見えないが w
>>527 > そんなことは
>>518も
>>520もわかっていて、
それらが分かってるように読めるなら、インデックスをお前も分かってない。
それかあれか、
「データが全てオンメモリに載っていない=遅い」というレベルのレイテンシを求めてる?
だったら言ってることも分からんでもないけれど、
さすがにRDBMSの守備範囲から逸脱してくるから
既に動いているSQLServerのシステムに求めるのは厳しいな。
(最近は守備範囲を広げようとしてるけど)
いやどう見てもただしい
キャッシュにはインデックスだけのせればいいじゃんというレスに対するレスだから
キャッシュ上のインデックスが効いていて
最高の効率でレコードのHDD上の場所が特定できても、
HDDへの最低限のIOが発生しただけで遅い、というのを正しいとするかは要件によるな。
自分は明確に間違いだと思うw
議論してる内容と前提を理解せずに、
単なるレスの文面だけみてレス返すから的外れな内容になるって例だな。
こまけー事は気にすんな。
メモリ増やして安眠しろ。
あ、ごめん525は何も悪くないです・・。
525って529でしょ
そもそも本当に正しい答えが欲しいなら
>>508はもっと情報を出すべきだな
これだけ過疎スレが久々に盛り上がってるにに最終的に答えが出せないよ
まず
1. サーバはDB専用サーバなのか?
2. 「システムが全体がもっさり」ってそのDBを使ってるシステムのこと?
3. 2がYESなら検索なのか更新なのか
> SQL Serverってインデックス貼らなくても、そこそこ速く動くのか?
これが最終的に聞きたいことならデータ量とサーバのスペックによるとしか言えないけど
SQL Serverに限らずNOだろうね
PKは設定してあるけどインデックスは作ってないみたいな勘違いもありうる話
544 :
514:2015/02/02(月) 15:06:48.85 ID:???
>>515 > メモリをどう使うのが効率的と言ってるのかわからんが
インデックスを貼ってないとseq scanが増えて、ディスクから読むページが増え、実際に必要とするデータ以外の
ページもキャッシュに載る可能性がある。
インデックスを貼っていれば、必要なページのみをディスクから読み、必要なページだけがキャッシュに載る。
その結果、キャッシュ容量のMAXに達するまでのクエリ数が増える。
そして、それはキャッシュミスを減らすことにつながる。
・・・という意味で効率的に使うことにつながると表現した。
つまりテーブル全体がメモリに乗るってことだ
>>545 結果的にそのような状態になる場合もあるだろうけど、もしそうだとしてもそうなる課程が違う。
つまり
>>508 への回答としてはこんなもんじゃないのかな。
> SQL Serverって正しくインデックスを張っていると、メモリの使用量って下がる?
インデックスがない状態に比べれば、インデックス分メモリの使用量が増える。
> インデックスを貼っていないと、テーブルがまるごとメモリに乗ってしまって非効率な気がする
インデックスを貼ってないからテーブルがメモリに乗るわけじゃない。
> SQL Serverってインデックス貼らなくても、そこそこ速く動くのか?
RDBMSを問わず、シーケンシャルスキャンとインデックススキャンの差は歴然とした差があるから貼れ。
>>547 > > インデックスを貼っていないと、テーブルがまるごとメモリに乗ってしまって非効率な気がする
> インデックスを貼ってないからテーブルがメモリに乗るわけじゃない。
インデックスを貼ってないがためにTable Scanになり、読み込みページ合計よりも空きキャッシュ容量が
大きければ、そのテーブルはメモリに乗るよ。
なんか、インデックスを使ってると、インデックス全体がキャッシュにのるって勘違いしてる奴いないか?
インデックスの場合も、読んだ分しかキャッシュにはのらないぞ。
クラスタ化インデックスでないなら全部読むから乗るでしょ
大体がインデックススキャンを期待したSQL書いたとしても
オプティマイザがテーブルスキャンのが早いと判断したらインデックス使われないし
最初に質問した人はその辺も明確にしないと答えは出ないよ
>>550 > クラスタ化インデックスでないなら全部読むから乗るでしょ
ほら、ここに勘違いしてる奴がいた。
実際にディスクから読んだページしかキャッシュにはのらないよ。
つか、何を実際にディスクから読むのかしらないから、
>>550には理解できないんじゃないか?
お前らこのクエリ発行したらこれがメモリに載ってぇ〜
とか考えながらやってんの?
正直そんなことどーでも良いから、俺の方が分かってる自慢はそろそろやめてくれ
>>553 > お前らこのクエリ発行したらこれがメモリに載ってぇ〜
> とか考えながらやってんの?
いちいちそんなこと考える奴はいないだろ。
> 正直そんなことどーでも良いから、俺の方が分かってる自慢はそろそろやめてくれ
お前が、そんなことどーでも良いと思うのは勝手だが、データベースの基本的なアーキテクチャは
知ってて損はないと思うがね。
>>553 > 俺の方が分かってる自慢はそろそろやめてくれ
別に自慢してるわけではない。
誤ったことを書く奴がいるから、訂正してるだけだ。
>>548 そうだね。
インデックスを貼ってないからではなく、TableScanを発生させたから乗るんだよね。
インデックスを貼ればテーブルがキャッシュされないって、風が吹けば桶屋が儲かるぐらいの遠まわしな話だろうよ。
>>553 「考えながら」はないな。
>>556 > インデックスを貼ればテーブルがキャッシュされないって、風が吹けば桶屋が儲かるぐらいの遠まわしな話だろうよ。
なんでこういう言い回しをしたがるのかわからん。
インデックスを貼っててクエリにそのインデックスが使われれば、不要なページはキャッシュに乗らないだろ。
全然遠回しな話じゃないだろ。
不要なページがキャッシュにのらなければ、必要なページがキャッシュから削除されるタイミングも遅くなり、
その結果、キャッシュがより有効に使われることになる。
なんでこんな簡単なことがわからんかな。
>>557 > インデックスを貼っててクエリにそのインデックスが使われれば、不要なページはキャッシュに乗らないだろ。
そうだね。
インデックスを貼ったからではなく、IndexScanが使用された結果、不要なページへのアクセスが削減されたね。
インデックスを張れば不要なページがキャッシュに乗らないって(ry
そもそもキャッシュの話とインデックスの話って別だし
ましてやメモリーに全部乗るとかはレコード件数にも依存する話だから外野がやいのやいの言ってもしょうがない
>>560 > そもそもキャッシュの話とインデックスの話って別だし
いやいや、密接に関係あるよってどんだけ説明すればわかるのか。
インデックスの有無にかかわらず、どういったアクセスをしたかが密接な関係を持つってことになぜ気づかないんだこのバカ
>>561 概念としては関係ないだろ
混ぜてるからどんどんグダグタになってるし
最初の質問から脱線しすぎてるし
SQL Server固有の話でなくなってるから終わらない?
大体否定しかしない奴も本当に理解してるなら揚げ足取りじゃなくて
正しい知識を書き込めばいいのに
>>564 否定のみの揚げ足取りをされたと勘違いしてるのね。
ちょっと考え方がカタすぎるよ。十分情報はでてる
>>565 > 十分情報はでてる
レコード件数すら出てないのになにを言ってるんだろう...
>>565 だから皮肉はいいから具体的に書けよ
お前ゆとりだろ
お前の脳内が見えるとでも思ってるのか?
>>526の「buffer cache ratio」を測ってもらわないと話にならない。
seekとscanの言葉が使い分けられないヤツは理解度はお察しのレベル。
cluster index「scan」はクラスタ化インデックスの貼ってないテーブルのtable scanみたいなもんだから。
あと、scanしたってメモリに乗るから速いとかいうヤツは、今流行のKVSでも触ってりゃいいから去ってくれ、マジで。DB技術者としては、死んで頂きたいレベル。
>>566 回答者の話じゃないの?話読めてない人か
>>561 話がややこしくなるのでご退場ください。
メモリ量よりデータ量が多いので・・・って、
もう説明しても理解できないと思うから、とにかく黙ってて。
そういえばなんで timestamp とか index scan とか他のRDBMSユーザの直感を否定するような名前がついてるんだろ
歴史的にはこっちが先、とかあんのかな
>>569 > 回答者の話じゃないの?
意味わからん、質問者からの情報もろくろくないのに回答者が情報持ってるとか言い出すのかよ w
>>570 > 話がややこしくなるのでご退場ください。
ややこしい話なんか全然してないんだが。
ややこしいと感じるなら、RDBMSの基礎的知識が圧倒的に足りてない。
>>573 ここID出ないからあなたが説明したレスがどれか分からないんだよね
このスレは性質的に長文ありだと思うからコテハンにするか
どのスレで説明してるのか明示するかしなよ
あなたみたいに人を馬鹿にするレスしかしない人は荒れるからいらんよ
>>574 > あなたみたいに人を馬鹿にするレスしかしない人
が思い込みに過ぎないとは思わないのかな。
あ、これも人を馬鹿にするレスなのか?
な? 結局「俺の方が分かってる自慢」に終始してるだろ
もうヤメレ
>>575 キモいよ
あなたが日本で数本の指に入るくらいの知識人でも
あなたにだけは何も教わりたくないわ
説明が足りないと思っているレスに安価つけて、これはどういうことですかって質問すればいいんじゃないの
>>578 > 説明が足りないと思っているレスに安価つけて、これはどういうことですかって質問すればいいんじゃないの
だよねぇ
叩ける奴を見つけると叩きたがる奴のがキモイわ
>>526 > 自分としては「Buffer cache hit ratio」を測れ、とだけ言いたい。
> つまりキャッシュに載っていないデータのルックアップ頻度が高いことを確認してから、
> それをいかに下げるか考えるべき、と。
もっさり、というのはキャッシュミスが多いからじゃないと思う。
インデックスがないことによるTable Scanが重いのか、On Disk Sortが多発してるのどちらかじゃないかな。
インデックス付けない奴ってなんなの?
>>578 説明が足りてないんじゃなくて、中途半端に知ってる知識を混ぜて説明した気になってるからややこしくなってるだけ
何回か指摘したけど聞く耳持たないみたいだし、スルーしかないと思う
>>580 まあtable scanが多発してるのは予想できて、
それによってキャッシュから落ちちゃう頻度が上がって、
IOが詰まってもっさりするんでしょ、と。
言ってることは同じつもりで、根拠とする情報を調べる順番の話。
>>584 調べる順番ってことだったら、まずスロークエリーの特定だろ。
メモリ64GBくらいにすれば解決じゃね?
587 :
NAME IS NULL:2015/02/06(金) 21:28:06.77 ID:/C43TgD4
SQL server 2012をインストールしたがサーバーに接続できない
OS:Win7
そうですか
>>587 win7をDBサーバで使うのはライセンス違反です。
f/w切れ
>>589 > win7をDBサーバで使う
どうやってやるんだ? w
>>589 クライアント数によってはOKじゃない?
>>591 クライアントOSをサーバ用途で使うのがNGって意味では
>>591 20クライアントくらい接続可能だが
使って良いサービスにDBはないんです
>>593 まじで?どこ情報?
Win7 + Expressとかありそうだけどな
>>594 どこ情報も何もこの話題は散々散々散々出てるだろ
とりあえず過去ログくらいは読めな
>>264
ネットーワーク経由で使わないならOKだったはず
ちなみにMSに確認するとたいてい寛大な方向で対応してくれる。
確認せずに勝手にやってるのが見つかると面倒なことになる。
仕事なら確認すべき。
>>594 ここ
C:¥WINDOWS¥SYSTEM32\license.rtf
サーバとして使えるのは、インターネットインフォメーションサービス、ファイル共有サービス、
プリントサービス、テレフォニーサービスだけ。
なので、Windows7のチャットアプリも駄目なんだよね。
>596
ローカルで使う分には問題なし。
MDBだとファイル共有型なので規定の台数までは使えるが危なくて共有なんか出来ない。
>597
MSに聞いたら駄目って言われたぞw
>>598 じゃあそれは駄目な用途だったってだけでしょう。
明確にアウトなもの以外は確認するのが一番いい。
>>599 Window7でSQL Serverを他のPCから使用するのは明確にアウト。
OEM版のWindowsだとMSに聞いても答えてくれない。
で、PCメーカーに聞くとMSに聞けと言われる。
そう言われたといってMSに聞くとPCメーカーに聞けと言われる。
たらい回しになるんだよねww
製品版のSQL Serverはライセンスの数え方がえぐい。
>>604 じゃ、エスパーしてみる
接続時にインスタンス名"SQLExpress"が指定されていないから。
>>600 >OEM版のWindowsだとMSに聞いても答えてくれない。
>で、PCメーカーに聞くとMSに聞けと言われる。
両方のOSはVLと言えばMSが答えてくれる。
それが希望する回答ならOSはVLで納品する。
たったそれだけのことなんだが。
>>606 半分ネタのような話にマジレスされても。。
それに、ライセンス云々の話は納品時じゃなくて見積もり時に確認するよ。
納品時になってクライアントOSじゃ駄目だからサーバOS買ってくださいなんて言えるわけない。
そもそもOEMのVLなんてあったっけ
609 :
606:2015/02/08(日) 22:11:07.55 ID:???
>>607 いや、クラウド関係でたらい回しにされた経験から
書いたんだが・・・
>>602 2012でめちゃくちゃ上がったよね。
4コア=以前の1Server相当だから、今どきのサーバだと、4倍以上の額になる。
>>607 見積もり時というか、そもそもSAとかのディスカウント関係があるから、客が用意するのが普通でしょ。
>>610 > 見積もり時というか、そもそもSAとかのディスカウント関係があるから、客が用意するのが普通でしょ。
ケースバイケースでしょ
サーバーに組み込んで納入とかもあるよ
>>611 サーバに導入して納入する場合でも
ライセンス顧客調達はよくあるけどな
セレクトのコストメリット考えると他に選択肢無くなるって
よくあるどころかライセンスは顧客に調達してもらうものだと思い込んでたわ
>>612 だからケースバイケースだって
アプライアンスサーバーって知らんのか?
大口の顧客が調達してくれるとこで仕事してる人もいることを認めろ
>>616 だから知らんのなら黙ってろよ
>>617 それ認めてない奴なんていないだろ
それしかないと思ってる奴が世間知らずって話
619 :
NAME IS NULL:2015/02/15(日) 09:22:51.71 ID:oxnU1Wfv
SqlServerをLAN外へ公開しようかと検討してます。
自宅から会社のデータベースに直接アクセスしたい為です。
ポート番号を変えて、ルータ、ファイヤウォールに穴を空けますが危険でしょうか?
SqlServer、各データベース、テーブルへ はWindows認証でアクセスできるようにしてます。
御教授お願いします。
>>619 > 自宅から会社のデータベースに直接アクセスしたい為です。
会社のポリシー的にOKなのか?
(OKなら会社名を教えてほしい。そんな会社と取引しないようにするので)
> ポート番号を変えて、ルータ、ファイヤウォールに穴を空けますが危険でしょうか?
「危険」とするラインは定義てきているか?
SQLServer認証に総当りでやられることを危惧するなら、「危険」でしょ。
ポートを変えるのは当然として、ユーザに最低限の参照権限だけ与えるとか、軽減措置は必須。
あと、ルータ・ファイアウォールに穴を開けられる権限・技術があるならVPNを貼れ。
> SqlServer、各データベース、テーブルへ はWindows認証でアクセスできるようにしてます。
自宅のコンピュータも、Windowsのネットワークに参加できるのか?
会社内はWindows認証でアクセスできるとして、自宅からは・・?
> 御教授お願いします。
ベタなツッコミですが、ご教示です!
>>619 普通は、利便性/セキュリティ/管理性を考えて、VPNを使う。
622 :
NAME IS NULL:2015/02/15(日) 13:58:12.65 ID:oxnU1Wfv
>>620 >>621 早速のレスありがとうございました。
常識的にどうなのかが疑問でした。
VPNで構築して見ます。
>>622 本当に会社的にOKなのか?
個人商店か何か?
何のDBかもいってないのにそんな食いつくのか。
心配する気持ちもわからんでもないが
SQL Serverのセキュリティーホールを狙ったワームがまん延したことがあるが
それは遠い過去の話で済ませられるものなのだろうか。
>>620 言ってる事は正しいと思うけど、俺はお前と仕事したくないわ
2chの過疎スレで軽い気持ちで質問したんだろうに
鬼の首を取ったように攻め立てるって、どんだけ苛立ってるんだよw
>>626 デタラメな回答されるより良かろ
それ以前にここは2ch
>>626 攻め立ててるって言うほど厳しいか?
一応ちゃんと回答してるし。
SQL-Server をインターネットに直接公開して、自宅からアクセス?
・ダメに決まってるだろうが、ボケ。
・100年 ROM っとけ。
・頼むから素人は SQL-Server に触るなよ。
辺りの回答で埋まってもおかしくない質問だぞ。
やろうと思えばできるという環境が根底にあるんだろうからポリシーだなんだは不要。
そういうとこなんだよ。
SQL鯖のポート番号変えたりFW設定できるヤツが公開したら危険か
なんて聞くわけがない。
つまり、釣られたってことだろw
一連の流れの中に、listenポート変更、napt設定が高度な設定だと思っている人が複数人いそうなんだが、
このスレそんなレベルで大丈夫なの?
まあここはネットワーク管理者のスレじゃないからな
>>628 > SQL-Server をインターネットに直接公開して、自宅からアクセス?
> ・ダメに決まってるだろうが、ボケ。
MySQLやPostgreSQLを使ってると、駄目に決まってるとか言われても、何で?って思うけどね。
データベース管理者がF/Wの設定を変更できる会社は零細企業
>>633 そうだっけ?躓いた記憶がないから面倒臭くなかったんだと思いたい。
>>634 なんで?と聞くと、php??admin の話を出してきそうな気配がする。
>>634 勇気ある行動乙
世間では蛮勇って言われてるけどw
>>635 そこそこでかい企業でもネットワーク管理者とデータベース管理者の実質トップは情報システム部門の長になってる例は珍しくない
>>636 > 何で?
何でって何が?
「MySQLやPostgreSQLを使ってると、駄目に決まってるとか言われても、何で?って思う」理由?
だとしたら、MySQLやPostgreSQLは、SSH使って普通に外から繋ぐことができるから。
データベースはクラウド上にあって、社内から直接アクセスとかしないの?
確かにねぇ。インフラの一環みたいな面あるし。アドミンさんだわ。
>>639 そんなのつきつめれば、CIOまでいくだろw
話の流れからして、直接的な管理ができる範囲に決まってるだろ。
>>639 だが実質の管理者は2次請け3次請けの派遣社員だったりする。
セキュリティを派遣社員に任せるなんてどういうことなのよwww
>>642 いや、だからちょっとした企業でもシステム部門の部長とかは自分で内容を理解して、必要時に設定変更をできるスキルを持っていることは珍しくないって話
最近はだんだん変わってきたけど、以前は叩き上げがほとんどだから
CIO はそういうのより責任をとれる奴を割り当てるから、できないことがほとんどだよ
>>643 まあ、あるあるだわな
リストラで主要な人員がいなくなって、内容理解してるのは派遣だけとかw
>>626 自分は
>>620だが、仮に仕事でこんなこと聞かれたらろくに相手すらしないわ。
金払ってくれるお客さんなら別だけど。
>>628の言うとおり「回線切って首吊って氏ね」のレベルだと思いますよ。
>>622の「常識的にどうなのか」に答えるんだとしたら、ありえない!
自宅と会社をつなぐなんて基地外か、データ盗みたい犯罪者予備軍、盗まれたい被害者予備軍でしょ。
以上。
まあ俺もSQL Serverをインターネットに直接公開なんてやるべきではないと思うが
ところでお前ら、SQL Azureってどう思ってる?
>>646 返信内容の正確さではなくあなたの人間性のことだよ
>>620も
>>646も言ってる事は認めるけど人間的にコミュニケーション取りたくないってこと
あなた20代だよね?30代になったら分かるよ
>>648 > あなた20代だよね?30代になったら分かるよ
俺はこんなこという奴とは、人間的にコミュニケーション取りたくないわ
お前とは○○したくないわって口ぐせか何か?
ふむ。
>>577 あなたが日本で数本の指に入るくらいの知識人でもあなたにだけは何も教わりたくないわ
>>626 言ってる事は正しいと思うけど、俺はお前と仕事したくないわ
>>646 仮に仕事でこんなこと聞かれたらろくに相手すらしないわ。
>>649 俺はこんなこという奴とは、人間的にコミュニケーション取りたくないわ
まぁ一人か二人だな
>>651 >>646は自分(>>)なので別なんだが・・・
そもそも
>>626とぶつかってるので文脈からも分かると思うんだが。
>>648 便所の落書きから人間性を想像するって・・・ねぇ?
言ってることが認めてもらえりゃ十分だから、ROMってればいいのに・・・
いっそYahoo!知恵袋の回答見てればいいんじゃない?
”人間性”に優れた生ぬるいやりとりばかりだけどな!
>>653 確かによく見かけるなと思って抽出しただけだよ。
昔ながらの2ch的なあおりのつもりならタイムマシン乗ってROMってどうぞ
キモいやつが一人張り付いてんなぁ
>>656 SQLServerに関して一切有益な情報を出さずに、
人間性を語りだしたヤツも相当病んでるんじゃないか。
これで典型的なアスペって本当に病んで困ってる人に謝ることだな。
以上。