Microsoft SQL Server 総合スレ 12
Microsoft SQL Server (Transact-SQL) の総合スレッドです。
・Microsoft 公式サイト
http://www.microsoft.com/japan/sql/ >>177
完全バックアップ以外は週一でいいんじゃないの?
もちろん、DBのサイズや用途にもよるけど。たしか、ウィザードはそんな(週一)がデフォルトだったと思う。
うちは完全バックアップを毎日とっている。 >>178
SSISはSQL Serverが必要というよりは、Visual Studioが必要なんだよ。
Visual Studioは入ってるのか? >>178
SQL Serverは伝統的にサーバーソフトウェア、クライアントソフトウェアを作り分けていない。 >>180-181
サーバのリソース食うのは避けたいので、クライアントでパッケージ作成したかったの。
慌ててVS2019のCommunityインストールしてSSDT入れたら
要求されたメタファイル操作はサポートされていません。 (0x800707D3)
(涙) 最近VSCodeでSQL書いてるけどこれすげえいいな
補完もするし複数列にCASTだのISNULLだのつけるとき
マルチカーソルが便利すぎる
SQL発行の結果が帰ってくるのはManagement Studio
のが速いけどVSCodeのが起動速いし
実行計画見るときぐらいしかSSMS使わんくなった >>150
リプレース時の互換性レベルの変更は危険。
チューニング済みの SQLほど実行計画ボロボロになる。 ロール作成しようとしてるんだけど、Viewに対しては全DDL,DMLを許可し、Tableに対してはそれらを許可しない、っていう内容。
公式サイトをずっと見てるんだけど、オブジェクト単位で設定しないとダメなんだろうか。 なんかのソフトにバンドルされてるSQL serverてそれ単体でも使うことができる。
例というとPCに弥生会計をインスコしたらSQLserver2014SP2 ExpressEditionてのがインストールされたんだが。
同じPCにwordpress入れようと思うんだが、このSQLserver兼用できるのかな? ログインの認証周りが大丈夫ならいけるのでは
というかExpressインストールされるのはいいが、saにパスワード設定されていたら泣く 普通はWindows認証でadministratorで入れる 189ですが、1台のPCにSQL serverと弥生会計いれて、もう一台のPCに弥生会計を入れて、
2個の弥生会計からSQL serverをつつく作りになってるんだけど、
こういう場合て、ネットワークて同一セグメントで使うもの?
弥生会計の取説だと「同一セグメントで」て書いてあるんだが、ためにしもう一台をVPN接続越しで接続してみたり
SQL serverをAWSに置いてみたら激重になったんだが、DBてそういう使い方しないもの? >>195
今時の回線事情考えたら
DBの問題じゃなくアプリの設計の問題の可能性のが高い >>195
実際にできるできないはあなたの会社のセキュリティポリシーによるけど、
vpnで直接連携なんて怖くてやらない
同一セグメントでないとダメかといえばそんな事はない
しかし、FW、L3SWの設定はもちろん必須 弥生はどうか知らないが、SQL ServerをVPNの向こうに置いてもそれほど遅くならないよ。 AWSってSQLサーバのサービスをやってくれるの? >>196
アプリ設計の問題みたい。
https://yayoi-k.jp/yayoi-network/vpn/
DBを1拠点だけで突く設計みたい。複数拠点の場合はリモートデスクトップだ。 5席規模のデータ入力で
SQL Server Express使おうとしたら
「無償版とか信用ならん!!!」
って言って上司がライセンス購入しようとして聞かない
その割にベンダーからの見積もり30万って見て
高すぎ!安くして!と言ってくる
なんとかなりませんか、、、 >>201
「お前はバカか」と言ってやれ。
無償版が信用ならんのなら、オープンソースは全部だめ。
アンドロイド携帯もルータもNASもオープンソースだらけだぞってね。 >>201
言ってくるってお前の立場は何なんだよ
値段の文句は見積もり出したベンダーに言えよ >>203
おそらくベンダーのソフトの見積もりは妥当なもんだと思うよ。
作業料金とかの方でぼった食ってる場合が多い。 >>201
なぜSQL-Server Expressを入れようとしてる奴がベンダーから見積もり取ってるんだ?
普通にMSから直接買えばいいだろ
5席ぐらいならCAL入れても20万もかからん
https://www.microsoft.com/ja-jp/sql-server/sql-server-2017-pricing >>205
20万でも高いとか言われそうな案件の悪寒 >>201
だが皆レスありがとう。
こんだけ来るとは思ってなかったw
俺は案件に絡んでなくて
アドバイスを求められてるだけなんだ。
だからExpressを勧めた。
Expressを信頼できない無償版と言ったのは上司。
見積もりを取ったのは別の社員。
確かに作業費等々でボッタ食られてることも
伝えたんだけど金のこと言うなら
Express使えよって思ってさ… 経験浅いので教えて欲しいのですが
ストアドの中でテーブルAにデータをINSERTしているのですが
エラーが起きるとロールバックされて消えてしまいます。
これを消える前に取得する方法はあるでしょうか?
例えばロールバックされても消えない特殊なテーブルB(構造はAと同じ)を作っておいて
このテーブルBにもINSERTしておくとかは出来るのでしょうか?
そもそもそんなテーブルは作れないのかもしれませんが・・・ >>208
コミットすりゃいいんじゃね?
てか、何もしてなきゃinsert自体が成功してたらその後のエラーでロールバックなんてしないはずだが… >>208
問題なければINSERT直後にCOMMITしてしまうか
そもそもトランザクション処理をしなければ良い ストアド内ならエラーキャッチしてうにゃうにゃできるかもしれんが
まあトランザクションの設計が悪いな システム自体が巨大でストアドを入れ子で何階層も呼び出していて、割りと下位のストアドでエラーが起こっているのです。
業務データが壊れる可能性があるので中途半端な状態でコミットはできないです。
そもそも何階層目でトランザクションが開始されてるのかもわかりません・・・ >>207
Expressはdbのサイズが10GBまでという制限もあるから、そもそも収まるのかという話もあるけどね
アプリケーションのデータ格納用としては結構使われてるし、実績的には申し分ないよ
だけどサポートや問い合わせは受けられないので会社のルール的に保守契約できないものは採用できないって事はあるよね >>213
要件次第
Expressの1番の制限は>>214の言うDBサイズ
まあ10GBってそこそこのサイズだしインスタンスは複数作れるので工夫次第である程度回避できたりするけど
あとは使用するメモリーが制限されてるとかフェイルオーバーができないとかあるから自分で https://docs.microsoft.com/ja-jp/sql/sql-server/editions-and-components-of-sql-server-2017?view=sql-server-ver15 とかを見て判断すればいい そもそもそのテーブルの値をとってどうしたいんだ?
まあざっと思いつくと
エラーの出るところだけ子トランザクションにする
エラーキャッチしてなんとかする
@変数にとっておく
事前にコミットする
そんなとこか
思いつきだから実際どうかはそれぞれ試して決めろ
ストアド内から別トランザクションはちょっと難しいし、出来てもやるべきではない
ロールバックされないテーブルとかもない(シーケンスとかはロールバックされないけどな) いつのまにか、SSMSでストアドのデバッグできなくなってるんだが
みんなどうしてるんだ? Standard版だと40万円以上するのがExpress版だと無料って
一体どうなってんの、この会社? SQLOLEDB、MSDASQL、SQLNCLI11
接続プロバイダどれ使ってる SQLOLEDB
どこがどう変わるかよくわからん
プロパイダごとの機能差とかだれかまとめてくれ Windows10でSQLServer2017ExpressのDATAフォルダがエクスプローラで開けなくなりました。
コマンドプロンプト等でどうかは確認していません。
UACで警告されるのは知ってたんですが、インストール直後のデフォルトの状態で、フォルダが開けませんでした。
同型機を2台設定していて、1台は開くことができました。
C:\Windows\Tempも同様でした。 途中で送信してしまいました。
会社のPCで別の担当がセキュリティソフトまでは導入済で、SQLServer2017Expressをインストールして動作確認しようとして気づきました。
管理権限のあるユーザでセットアップしていたつもりですが、VirtualStoreへのセットアップになっていたとかあるかもしれません。
本日から休暇になってしまって詳細に確認できていません。
直接SQLServerとは関係ないことかもしれませんが、どなたか解決策に思い当たる方いらしたらご助言ください。 開こうとしたフォルダのアクセス権確認する以外に何があるというのか >>233
>>230-231の質問者です。
質問を短く言えば「アクセス権確認する以外に何があるか」という質問です。
アクセス権はAdministratorsにフルコントロールがついていて、Administratorsに所属するユーザだったと思います。
セキュリティ以外にも、ファイルやフォルダの読み書きには、排他制御がかかることがあるから、何らかの処理中だと可能性があるとも考えていますが、再起動しても変わらなかったので、処理中の可能性は低いと思います。
ActiveDirectory環境なので、その不具合も考えられるかもしれません。
>>232
同じときに同じ仕様で購入したPCに設定していてということです。
一方は問題なく操作できて、もう一方がダメでした。
開梱時からの操作が同じかというと、異なっている作業が行われた可能性はあります。 そもそも2017EXPRESSのデフォルトのデータディレクトリってどこだ?
まあ、そこにインストールしたかどうかも怪しいけどな >>234
ADのアカウントに対してローカルの管理者アカウントが存在しているのか? >>236
そこは問題ないはず
2つのPCともにADの機能で該当ユーザに管理者権限を付与している
管理者権限じゃないとリモートデスクトップが使えない設定にしていて、リモートデスクトップも使えているから管理者権限はあることになる
個々のPCでセキュリティ設定すると漏れがあるからADのグループポリシーで設定するのを基本にしてます。 フォルダの所有者をAdministratorsに変えれ >>239
デフォルトだとLOCALSERVICEとかですかね
>>238
インストールした自分のアカウントがAdministratorsに所属するんで、Administratorsではないかと思いますが、確認してみます。
仕事納めの日に慌ててセットアップしていたので確認が不十分です。
年を開けたら振替出勤なんで、確認して報告させていただきます。 LOCALSERVICEのアクセス権はどうなってると? >>230
うろ覚えだけど、UAC効いていてAdministrator以外でアクセスしている(Administratorsのメンバーのユーザーではない)場合はUACを切るまたはAdministratorでアクセスしてみるとひらけるかも?
Windows10だとデフォルトではAdministratorが無効化されているので有効化してね(作業終わったら無用なトラブル避けるためもとに戻す)
開けたら管理用にグループ作ってフォルダにアクセス権に追加しておく
そして管理させたいユーザーをグループのメンバーにするとUAC有効にしてもアクセスできるようになる
サーバーOSでやっていた内容だけどクライアントOSでも同様のはず
間違っていたらゴメンネ >>242
UACは無効にしていたつもりですが確認してみます。
SQLSeverとCAMをインストールしていて、CAMは無効にしてと指示がありましたが、もしかするとSQLSeverインストール時は、UACが既定のままだったかもしれません。
Administratorでは試していないので確認してみます 試してないけど思いますかもしれません
話にならんな
そもそも特定のディレクトリが開けないってはなしで、本質的にはSQLServerの話じゃないし
開こうとしたフォルダに対する開こうとしたユーザのアクセス権確認するしか確認方法なんてないよ
なぜそのアクセス権になったかはその次の話だ Windows10でSQLServer2017ExpressのDATAフォルダがエクスプローラで開けなったと言った者です。
休み中に確認するつもりでしたが、手が回らず、休み明けになってしまい申し訳ありません。
結論から言うと何も問題無しにフォルダは開くことができました。
Windows10の設定には特に問題なかったようです。
他でも類似の不具合が確認されました。
明確にADの管理者から回答を得ていませんが、ADに何か不具合があるような感じです。
アドバイスを頂いた方ありがとうございました。
その他の方、スレ違いで失礼しました。 SQLServerをHyper-V上で動作させたときの不具合事例を一つ報告させていただきます。
今まで、WindowsServer2008のHyper-V上で動作させていたSQLServer2008R2を最終的にWindowsServer2012R2のHyper-V上のSQLServer2017にアップデートしたところ、著しくパフォーマンスが低下し、クライアントプログラムからタイムアウトが頻発しました。
Hyper-Vのメモリ割り当てを動的にしていたのがパフォーマンス低下の原因だったようです。
よくよく考えるとSQLServerは特に制限しなかった場合、許す限りのメモリを消費するので、仮想サーバのメモリを動的にしていても上限値まで使い切ってしまうので、初めから最大値を割り当てるべきでした。
ネットで多少情報はありましたが、皆さんもこんな不具合はあったことありませんか
SQLServerのパフォーマンス比較ってMSの許可なく公表できないことになってるから、あんまり情報無いんでしょうかね >>249
単純なバージョンアップだけだと著しく動作速度が遅くなるって話
バージョンアップで遅くなる話はよくあるけど普通は数パーセントレベルだと思うけど何百パーセントて感じで遅くなりました
Hyper-V使い慣れている方には当然なのかもしれなけど今回初めてだったもので上げてみました
2008にする前はVirtalServerだったんでHyper-Vに乗り換えた時は問題になりませんでした 一般的にそれは「単純なバージョンアップ」とは言わないと思うぞ >>251>>252
分かり難くてすみません
Hyper-V仮想マシンはそのままでしたよ
今回は、ホストOS2012R2上のHyper-V仮想マシンのOSを2008から2012R2に変えて
SQLServerは2008R2から2012R2に変えたって話です
ソフトのみ更新で、すごく遅くなったのでHyper-V仮想マシンの設定を変えました
3か月ほど前にホストOS2008のサーバから2012R2のサーバへ移動させました
その数年前がホストOS2003でVirtalServerでした
このくらい変われば物理構成変更と思うんですけどね Sqlserverのバイナリ型は例えば本当にバイナリだけをdbに入れるのでしょうか?
アクセスのOLE型みたいにOLE型ヘッダーを付け加えたりしないのでしょうか?
ファイルのバイナリだけを保存してくれればいいのですが。 >>254
そんなの製品の仕様で、データファイルを直にいじろうとするのがおかしい。 バイナリデータを格納したいってだけで、データファイルを直で弄りたいとか言ってないけど?
つかADO.NETスレの人か
出来るかできないかで言えばできる
あとFILESTREAMとかいう機能もある >>256
そうです。バイナリ型はつかったことないので手探りで調べています。
(1)適当なエクセルファイルをSQLで格納
例)副問い合わせでエクセルファイルをかきこみ
SQL
INSERT INTO [Test].[dbo].[BlobTable](Data)
SELECT BulkColumn
FROM OPENROWSET(BULK N'C:\work\Book1.xlsx', SINGLE_BLOB)
それからc#から読み込みファイルをかきこみ。
connection.Open();
command.CommandText = @"SELECT [Data] FROM [Test].[dbo][BlobTable]";//SQL Dataはバイナリ型
byte[] data = null;
data= (byte[])command.ExecuteScalar();//読み込み
string tmpdir = Path.GetTempPath();
var Tempfile = Path.Combine(Path.GetTempPath(), "tmp.bin");//テンポラリのパス設定 ファイル名はtmp.bin
System.IO.FileStream fs = new System.IO.FileStream(
Tempfile,
System.IO.FileMode.Create,
System.IO.FileAccess.Write);
fs.Write(data, 0, data.Length); fs.Close();
これをtmp.binとBook.xlsxを比較して(ファイルの中身がおなじことを
確認できました。PDFやWORDなどバイナリとしてSQLServerに
格納したかったのです。おさわがせしました。 sharepointはblob型でドキュメントファイル保存してたな ちなみにアクセスで失敗した点はおっしゃるとおりOLEのヘッダーを
削除しなければならないようです。マイクロソフトプログラミング
ASP.NET4のP140にかいてありますね。ためしていないのですが
書き込むとたしかに元ファイルとアクセスに書き込んだバイナリと比較すると
違うみたいですね。 データベースにバイナリデータ入れると
データベースが肥大化して扱いにくくなるぞ。バイナリデータは外部にもってデータベースには保存先パス情報だけもつほうがいい。 バイナリ項目を含んだSELECT文は取得結果に時間がかかる。
ローカルネットワーク内なら速度はでるだろうが
ルーター越えだとメチャクチャ遅くなりユーザーから遅いと文句言われるぞ データベースの中に突っ込むと権限とかバックアップとか移行とかがラクチンすぎるので
容量が許せば積極的にデータベース内に保管したい。 >>バイナリ項目を含んだSELECT文は取得結果に時間がかかる。
バイナリの部分はSELECT文に含まさなくても重いのですか?
>>データベースの中に突っ込むと権限とかバックアップとか移行
ファイル管理は便利ですよね
>>バイナリデータは外部にもってデータベースには保存先パス情報だ
はじめはそれがベターと思っていたのです。私も バイナリのフィールド含まなければSELECTは重くない
アプリケーション側でバイナリのフィールド含まないSELECT文で検索用一覧用データを取得して必要なデータ数件だけバイナリフィールド含んだSELECT文で取得すればいい 保存先パス情報って、20世紀じゃあるまいし・・・
クライアントからアクセスできる場所に置かないといけないと思うけど
アクセス権どうすんの? 必要ならアクセス権設定できるファイルサーバーに置くだけだろ
21世紀にもなって何をいってんだか ファイルサーバは読取専用権限にしないと変更されてしまうので
権限設定がめんどくさいのでWebサーバがいいかな
見たかったらパス情報からリンク先url作ってダウンロードさせるようにすればいいと思う 静的ファイルのような扱いではなさそうだからそれもどうなのかね? >>265
> クライアントからアクセスできる場所に置かないといけないと思うけど
サーバー経由で取得すればいいだけ
って言うかそういうシステム普通にあるでしょ システム運用で考えたらデータベースバックアップとっときゃそれで済むってのは楽なんだよな
ファイルサーバー用意するならファイルサーバーの運用を別に考えなきゃならん(言っても大したことはないが手間にはなる) 外だしのメリットは例えば画像ファイルをデータベースに保存したりすると画像ファイルの解像度を下げて空き容量を増やす事が出来なくなる。最近の画像ファイルは解像度高くサイズが大きいので増えてくると空き容量がすぐ足りなくなるよ >>271
解像度を落としたれば、落としてUPDATEしたらいいだけじゃないか
そもそも容量不足って、ファイルサーバーでも一緒じゃん。
足りなくなったらディスク増やすまでだろ。 SQL Server 2019 Developer が起動できなくなり、
データベースのmdfファイルもディレクトリ毎消えています。
イベントログには「SQL Server の評価期間が終了しました。」とあるのですが、
これは仕様ですか? >>273
> データベースのmdfファイルもディレクトリ毎消えています。
MSがそんな鬼畜な事するとは思えないが… そもそもdeveloperと評価版は別のはずだが
今のデベロッパーは登録しないと評価版とかになってるのか? すみません、mdfファイルは前のバージョンのディレクトリにありました。
Developer版を入れ直してアタッチしたら復元できました。
確かではありませんが、無料トライアルからダウンロードしたファイルを使用して
Developerをインストールしたから期限切れになったのかもしれません。
ありがとうございました。 >>276
VisualStudioとかだと登録しないと30日とかで期限切れになるのと同じじゃないの 当社拠点における新型コロナウイルス感染者の発生について
https://www.nttdata.com/jp/ja/news/information/2020/021400/
2020年2月14日
株式会社NTTデータ
当社拠点ビルに勤務している協働者1名が新型コロナウイルスに感染していることを本日確認しました。
本件を受けて、社員の健康と事業継続を保てるよう本社対策本部を設置し、所管保健所と連携を図り対応を進めてきました。その結果、感染者の当社拠点ビルにおける行動履歴と、14名の濃厚接触者が保健所によって特定されております。
感染者が発生したビルに対しては、本日時点で以下の対応を取っております。
当該ビルおよび周辺3拠点の関連部門に勤務する社員/協働者の在宅勤務指示