Microsoft SQL Server 総合スレ 11 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
Microsoft SQL Server (Transact-SQL) の総合スレッドです。
・Microsoft 公式サイト
http://www.microsoft.com/japan/sql/
過去スレとかめんどいから誰か適当に貼って >>8
DBMSの話で普通、ローカルとかリモートとかってのはサーバ(DB)側からみての話だと思うが
BACKUP DATABASE コマンドでUNCパスが指定できるから、ネットワーク共有ファイルに保存はできるはず
ただし、サーバサービスを動かしてるアカウントに権限が必要だが >>9
ありがとうございます
ネットワーク共有以外の方法は無いでしょうか?
例えばdb単位でdumpした奴をクライアント側(ssms)に保存するような機能は無いでしょうか
スクリプト生成も試したのですが互換性がどうのこうのと言われ使い物にならなかったです
bcpはスキーマを取れないようだし >>10
バックアップデータがネットワークを介さずにクライアント端末に瞬間移動する機能を期待しているの? bcpにフォーマットファイル作成するオプションがあるが >>11
瞬間移動?
mysqldump的なことです >>13
サーバ上にあるデータベースのデータをクライアント側にバックアップしたい。でもネットワークは経由したくない。
って話じゃないの? >>14
>ネットワークは経由したくない
そんなこと言ってないです
>>9さんが言っているのはDB鯖にネットワークドライブをマウントさせてそのにバックアップを取ったら?と言っているんですよね
そうではなくmysqldumpのようにクライアント側にダイレクトにdumpさせたいので同等の機能はないんでしょうかと訪ねているのです >>15
UNCで指定っていってるんだから、ネットワークドライブとしてマウントする必要ないでしょ。
CIFS使うことがいやな理由は? 設定が分からないとか面倒とかでは。。
SSMS を動かしているクライアント上に、SSMS が直接バックアップファイルを作成できるか?
ってことなら 不可 でいいんだよね? >>16
失礼
会社の鯖なんで共有の設定できないです
>>17
>設定が分からないとか面倒とかでは。。
会社の鯖なんで弄れないです
やっぱ無理なんすね
ダメだなsqlserver >>18
共有の設定するのはクライアント(端末)側でしょ? >>19
そうなんですか!
windows無知すぎて恥ずかしい…
ありがとうございます! そもそもバックアップはDB管理者のタスクで、一般ユーザーのタスクじゃないから
クライアント側にデータ吐きたいだけならBCPで良いだろ
サーバの設定変えられんとか、アカウント変更できんとネットワーク共有使えん可能性が高いんだが >>21
私はDBAではないです
bcpはddl吐けないですよね?
データのコピーならbcpで十分なのはわかってます そもそもなんのためにそんなことしようとしてるんだろう。 ddlは吐かないがレイアウト定義は出力できる
ddlを吐いても、一般ユーザーにテーブル作成する権限があるとは限らんし
ホント、なんのためにddl付きのデータが欲しいんだ >>24
>ddlを吐いても、一般ユーザーにテーブル作成する権限があるとは限らんし
>ホント、なんのためにddl付きのデータが欲しいんだ
そこは気にしなくていいです
ただmysqldumpと同じ機能がないことにショック だからバックアップはDB管理者の仕事だって言ってるだろ
クライアントにバックアップ保存するようなコンセプトじゃないんだよ >>8
無理です
SQL-Server にはそう言う機能がないので MySQL でも使ってて下さい
で、終了でしょ バックアップは、というか基本的に全てのSQLはSQLServer上で動いてるから、SQLServerのプロセスの実行アカウントがアクセス出来る場所にしかアクセスできない
sqlcmdやbcpなんかのユーティリティでクライアントにデータ持ってきてるのは、結果セットをユーティリティがネットワーク経由してくれてるだけ、
バックアップファイルは結果セットじゃないんで無理
という認識でいる。あってるかどうかは知らない
mysqlは
SQLServerサービスの実行アカウントがNetworkServiceかDomainAdminsのユーザならUNCでいけるかな?
インメモリのテーブルにレプリケーションのハブリッシュテーブル指定できないとか対応しとけよMSのあほー
使えそうと思ったのに >>30
> という認識でいる。
終わった話題に間違ったこと書くアホ w SQL server2012について、
コンピュータ名の変更が必要となっています。
すでにセットアップ済み、実行中のものなんですが、
コンピュータ名の変更を行うとSQL serverにログインできなくると見聞きしています。
msdnには以下のように書いており、
https://msdn.microsoft.com/ja-jp/library/ms143799(v=sql.110).aspx
まだ試してはいないのですが、他に必要な作業というのはあるのでしょうか?
また、ログインできなくる原因というのはSQL serverが管理している情報で、旧コンピュータ名のものがあるからという認識なのですが、それがどれほどあるかがわかりません。 >ログインできなくる原因というのはSQL serverが管理している情報で、旧コンピュータ名のものがあるから
接続できなくなる理由はほとんどクライアント側だと思うが
すくなくともDBサーバー側ではそこに書いてある通りだろ
あとはBrowserとかリスナとかのサーバ側でもネットワーク設定の問題か SQLServer の資格情報がホスト名付きでシステム系のテーブルに格納されてるから、それを変更しないと。
ってのならやった記憶がなくもないような。
詳細は全く覚えてない。すまん。 windows認証のログイン、ユーザーがだめじゃ? >>35
日本マイクロソフト人事本部シニアマネージャー(名ばかり管理職)の西川昌邦(さいかわまさくに)は犯罪者にして殺人犯だ!!
「あなたのような従業員は会社のパフォーマンスにとってマイナスなので早く死んでください」
などと自殺教唆を公然と行った!! その結果人が死んだ!!
丁寧に言えば何を言ってもいいというものではない!!これはヤクザや借金取りが脅迫をする時に
「いついつまでに金一億円をお振り込みください。命が惜しければ間違った判断をなされないことを期待します」
と発言するのと同じレベルだ!!
しかもそれを注意してやったら、「世間はわれわれの味方だ。文句があるなら訴えてきたらよろしい。メールを電番を公開したければ
どうぞご自由に。世論はわれわれを賛辞するするメールを送付するだろう」
などとイカ様気取りも大概にしろという発言を行った!!
抗議先 日本マイクロソフト人事本部 西川昌邦
メール:masaikaw●microsoft.com
(●を@に置き換えて)
電話:09025411718 >>33
ありがとうございます。
browserとはsql server browserの事を指しているのでしょうか?
sql server browserとなると正直触れたことも無いので…
sql server 2012上での作業は>>32のみということでしょうか?
あと、sqlに対して行うサーバー名の変更作業は、実際サーバー名を変更する前に行った方が良いのでしょう?
コマンドプロンプトからsqlcmdでも出来そうには思うのですが、リスク軽減的にどちらが良いのかもう一つ分かりません。
何度も質問してすみません。 リスク軽減なら、ぶっ壊れても最悪再インストールすればいい検証環境で手順確立するのが一番
システムDBのバックアップリストアや再作製のやり方も練習する
システムの構築手順を確認する、最悪の場合に備えて再構築するための時間を確保する
かなあ。
express落とすか、developerかmsdnあるならそれつかって自分のPCで試してみればいい。
システム構成もホスト名変更する背景もわからんから具体的なアドバイス難しい サーバー名の変更だけならそれで良いはず
規定のインスタンス使ってない場合はよくわからない
Windows人称でないなら問題も出なさそう DBのバッチ系の処理がおそいおそいと文句言われる
HDをSSDに替えてアッと言わせてやろうと思うけど効果ありますか?
ちなみにSQLServer2008無印
現在の構成はRAID5でログのみミラーリング 効果ありそうだけどSSDの損耗が早くてアッと言われそう >>40
バッチ処理をどう実装しているかによる。
単発クエリを10万回ループとかだったら、SSDに変えてもほぼ無力。 >>40
効果的なチューニングにはウイークポイントの調査が必要です。
複数あるバッチのどれが長時間かかるのか、バッチのSQLのうち長時間かかるのはどれか(1回の時間x回数)
SQLがわかったら実行プランを取得してテーブルスキャンしてる項目を確認する。またOSのパフォーマンスモニタで書き込み、読み込みの状態を調べる。
サーバのハードウェアRAID書き込みキャッシュがON(ライトバック)になっているかも確認する(シスコのやつはバッテリー付きモデルなのに標準がOFFだった。) エンタープライズを使っている場合はテーブルの圧縮を行うのも有効です。
ほとんど欠点なく、スループットが上がります。 みなさん、ありがとん!
バッチは毎日、毎時とそれぞれ数千〜数万件をBCPやインポート機能+カーソル処理でおこないますから
かきこみ相当あるかも(汗)
一応、定期のメンテプランは実行していて圧縮、再構成等マメにやっています。ハードウェアRAID書き込みキャッシュがONもかくにんしよ、
印メモリは予算的にむりだし2008がサポート切れまでこき使ってやるつもり。 bcp等で巨大なデータを書き込む際にキー有りテーブルに書くのではなく、キーなしに書いて後からキーをつけた方が早くなります。
ただ、一時的にテーブルサイズが倍になる(alter tableすると内部でテーブルがコピーされるから)弊害がでます。
うちではbcpに6時間かかってたやつが3時間になったよ 処理の仕方にもよるけど、cpuのクロック高いのにするとか
うちが扱ってる製品がそうで、10コアoverとかようつかわん
E7-4000番台に3Ghz超える4、6コアのcpu欲しい
インテルさんお願い ネックがどこにあるかわからんのにどうこう言ってもなぁ >>47
> バッチは毎日、毎時とそれぞれ数千〜数万件をBCPやインポート機能+カーソル処理でおこないますから
> かきこみ相当あるかも(汗)
それは、コードがボトルネックだな
ハードウェアを増強しても、5分が4分とかになるくらいだろ
コードを書き直せば、5分が30秒とかになるだろうな 1回のinsert or update or deleteが20msくらい×5万回=1,000秒=16分ちょい
とかになってるのかな sql server 2014 expressで
nvarchar(100)のカラムにハングル文字を書いて読み取ったら文字化けしました。
Server Management Studioで確認しても文字化けして
????と成ってます。
ネット情報では文字列の前にNプレフィックスを付ける必要があるとの事ですが、
そういう作業をせずに、DBの既定の言語をUTF-8に設定するみたいなのは出来ないのでしょうか?
既定の言語はSJISらしいですが、本当でしょうか? そもそもOSの言語が何で、サーバ/クライアントの言語が何かわからんが
nvarcharに対する文字列は基本的にはNプレフィックス付けるべき
付けないとおそらく照合順序に従って変換されてると思われる
(どのレベルでの照合順序が使われてるかは知らん)
データベースの既定の照合順序はALTER DATABASEで変えられるけど
データベース作り直す方が良いと思うぞ >>55
とりあえず全部のカラムにNを付けたら解決しました。
nvarchar型以外のカラムにもNを付けたのですが問題ありますか?
試した限りでは問題なさそうなのですが。
Win7とWindows Server 2012R2です。 Windows Updateを最新にした状態で2016をインストールしようとしたら「最小要件を満たしていない」と蹴られたのだが理由が分からない。
スペックが足らない訳でもないし、.Net Flamework 4.6.1はインストール済みなのに。。。
環境は以下のとおりです。Cドライブの空き容量は99GBです。
OS:Windows7 Professional x64
CPU:Intel Xeon E3-1241 v3 @ 3.50GHz
CPUクーラー:ETS-T40F-W
マザーボード:ASUS H97 PLUS
メモリ:ADATA AD3U1600W8G11-2 8GB×4
SSD(Cドライブ):Plextor PX-256M5S 256GB
SSD(キャッシュ):64GB
HDD:WD20EARS×2
VGA:NVIDIA GeForce GTX 660 MSDN見てみたらWindows7が要件から抜けてるぞ
ms143506 >>58
Oh・・・マジか。見つけられなかったよ、そうかWindows7は対象外か。大人しく2014インストールするよ。 SqlServer2014ExpressSP1の64bitを使っていて、
サービスの自動起動がされるときと、されないときがあるんですが、何かわかりますか?
手動で開始、停止を繰り返しても特に問題は起きず、
自動起動しなかったときに手動起動を行うことも問題なく出来ます。
サービスの自動遅延開始など試してみましたが、効果はありませんでした。
OSはWindows7ProfessionalのSP1です。 エラーログやOSのイベントログぐらい確認できないのかよ >>62
SqlServerのエラーログには何も吐き出されてなかったのですが、
OSのイベントログは見ていませんでした。そちらから調べてみます。 SQL Server (MSSQLSERVER) サービスの接続を待機中にタイムアウト (30000 ミリ秒) になりました。
と出力されていたので、タイムアウトの時間を60000ミリ秒に設定してみました。
これで発生しなくなるかはまだわかりませんが、しばらく様子を見てみます。
>>62
ありがとうございました。 そもそも30秒で起動できないような環境が正しいか検証するべきじゃね 2014 management studioで
TRUNCATE TABLE
でデータを削除してしまったのだが、UNDOは出来るの?
至急おしえてくれ。 UNDOが何の事を指してるか分かりませんが、できません
バックアップから回復して下さい >>67
バックアップはどこにある?
自動バックアップがあるの? 完全復旧モデルなら、今からバックアップ取って日時指定でリカバリできる気がする 潔く諦めるか、そこだけ何故か震度7に襲われたことにするか、ついうっかり硫酸をこぼしてしまうか 天狗の仕業にするか 様々な手はある
もしくはこれから徹夜で手入力し続けて、明朝やつれきってゲッソリした顔で上司を迎えて同情を買うか
まぁ、買ってはくれないだろうけれども 楽になりたいなら、びっくりするほどユートピア!を社員の前でお披露目するしかないだろうことは想像に難くない SQL Server 2012 SP3 をダウンロードしたいんだけどダウンロードセンターからダウンロードできない。
これだよねえ。
https://www.microsoft.com/ja-jp/download/details.aspx?id=49996
言語を選んでダウンロードボタンを押すと
ダウンロードしていただき、ありがとうございます。
Microsoft SQL Server 2012 Service Pack 3 (SP3)
インストール方法
以下略…
となってなにも起こらないです。
IEでもFireFoxでも同じです。
どうしたらいいす??
と、Chromeで試しながら書いていたらChromeではダウンロードファイルの選択ダイアログが出て、
ダウンロード開始することができた。ロサキネンシス! sqlserverからaccessのデータへ接続したいのですが
以下のページを参考にすると
http://sqltips.blog40.fc2.com/blog-entry-11.html
「Microsoft Jet 4.0 OLE DB Provider」というものが必要みたいなんですが
私のsqlserverには表示されていません。
どこかで手に入れてインストールしておく必要があるんでしょうか?
どなたか教えてください >>75
やっぱりそうなんですね
何とかaccessからデータ抽出する方法ってないでしょうか?
32bit版のsqlserverをインストールすればいけますか? Access側にSQL鯖へのリンク張って、そこで転送するとか >>74
64ビット版のODBCドライバ経由すれば良いんでない? Jet OLEDBは古い
ACE.OLEDBってのがあって、これは64ビット版もある
たぶんそれでできるだろうけど、ACEってサーバ側での使用は想定も許諾もされてない気がする
accessからSQLServerにリンクテーブル張るのが楽な王道じゃないかな リンク貼る時何選べばよかとよ?
native clientとか分からん選択肢が一杯出て来るけん SSMS2016でATOKが使えないんだが・・・
Win7x86 アプリの表示件数と実データの件数が合わないらしいから調べろと言われ
指示されたテーブルのフィールドを見たら泣きたくなった
だって、マスタキーがカンマ区切りで格納されてるんだもの orz
自分で関数作るか解析専用の外部スクリプト作るしかないのか? >>82
ちょっと思ったんだが、CSV型みたいなCLRのユーザ定義型を自分で作ってみるとかどうだろう >>81
ssmsでatokが使えないってどういう意味よ? SQLを発行してテーブルのデータを読み込む場合、
結果をDataTableに一気に読み込むのと、
SqlDataReaderを使って
while (dr.Read()){
...
}
のようにループで一個ずつ取り出すのとで、どっちが良いとかありますか? >>86
数件〜数万件くらいです。状況によって変わります。 >>87
上限が数万なら一気読みでいいかと
将来的にもっと増えるかもならループかな >>88
数が増えるとループのほうが良いのですか?
なぜですか? MySQLのREPLACE INTOに相当するコマンドはありますか? すみません、ご教示ください。
応研の給与大臣を使用していて、カスタマーサポートの指示に従いデータを復旧していたのですが、
以下の互換性コンポーネントをインストールするようダイアログが出ました。
Microsoft SQL Server 2005 の旧バージョンとの互換性コンポーネント
対象 : カスタマ、パートナー、開発者
X86 パッケージ (SQLServer2005_BC.msi) - 11258 KB
X64 パッケージ (SQLServer2005_BC_x64.msi) - 18552 KB
IA64 パッケージ (SQLServer2005_BC_ia64.msi) - 23490 KB
当方の環境がWindows10 64bitなのですが、どのパッケージをインストールすれば良いのでしょうか?
単純にX86 パッケージで良いものかわからなかったもので。 mergeで全項目上書きでいいんじゃね
そもそもdeleteしてinserすれば良いだけで
ちゃんとしたトランザクションをサポートするDBMSでreplaceの必要性がわからんが 生SQLだと0秒なのに、ストアド内に書くと35秒とか、
似たような悩みはググるといっぱい出てくるんだけど、どれ見ても解決してない様子
「推定実行プランの表示」ってダメ元で見てみたら、
ストアド版だけインデックス貼れって警告があって貼ったら直った
全く同じ内容なのに実行プランが違うわけないじゃん
もしかして有償サポート増やすために仕組んでる? mysqlやpostgreはいくら便利な命令があっても、スピードが遅いから単純なことにしか使えない
しかしまあ、t-sqlはお硬いやね
お硬いから速いのかもしれんが
GREATEST、LEASTぐらいは付けてもいいような SQLが同じでも実行計画が同じになるとは限らん
ストアドの実行計画は実行時に決定されるとは限らん
インデックス追加したということは、生SQLの方はインデックスを使ってないのに早かったのか
生SQLで使われてたインデックスがストアドでは使われてなかったのか
この程度の判断が自分でできないなら素直にどっかの業者に頼んだほうがいいんじゃね ていうか俺自身が方々で数十倍〜数百倍にスピードアップさせてきた業者だからw >>98
生SQLとストアドって言ってるんだけど、何が全く同一なのか?
推定実行計画は必ずしも実際の実行計画なわけじゃないぞ
ストアド内の個々のSQLの、実際の実行計画って簡単には確認できなかった気がするなぁ
だれか簡単なやり方しってる? 何が問題だったかわからんけど、とりあえず不要かもしれんインデックス追加して直りましたってか
パフォーマンスチューニングやる業者のレベルとしては信じられんな >>94
>replaceの必要性がわからんが
deleteしてinsertを一つのコマンドで実行したいからじゃねえ? 文字列型のカラムで
2016/10/24 12:34:56
2016/1/2 2:3:5
のように桁がバラバラなのですが、それを
2016/10/24 12:34:56
2016/01/02 02:03:05
のように
YYYY/MM/DD HH:MM:SS
に揃えるSQL文を教えてください。 >>101
dm_exec_query_statsにある情報でいいんかな
dm_exec_query_plan、dm_exec_sql_text組み合わせてステートメント単位でとってこれるよ
カーソルオープンは厳しかったと思うけど
生SQLが早いってことは検索条件に変数使ってるとかかね
分布が特異な偏りしてるインデックスをストアドで使うなら、with recompileつけるのが推奨だったと思う
ヒント文つけてもいいけど >>104
一旦日付型にCASTしてからフォーマット
つか特殊な要件が無ければ、DB上は日付型で保持してホストアプリ上で表示変換させた方が良いぞ
>>105
>dm_exec_query_plan、dm_exec_sql_text組み合わせ
それ見ても、どのプロシジャなのか探すのが大変だからなぁ >>106
>104
日付を文字列で保管するとどういうデメリットがありますか? >>106
dbidとobjectidで引っ張ってくればいいじゃない
うちはバックアップとかみたく自動で定期的にとるよう運用に乗っけてるよ
リリースして遅くなったなんてときにかなり重宝する ■ このスレッドは過去ログ倉庫に格納されています