HOME HELP 新規作成 新着記事 ツリー表示 スレッド表示 トピック表示 ファイル一覧 検索 過去ログ

■1266 / 親記事)  桐と外部DB
  
□投稿者/ hidetake -(2018/12/07(Fri) 10:13:42)
    2018/12/14(Fri) 09:07:56 編集(投稿者)

    桐で使用する「DB」ですが、桐のテーブルを
    共有し、その善し悪しも一定量理解した上で、
    それなりのシステムを作るならば、桐のテーブル
    にこだわり続けるよりも、「外部DB」+SQLサーバ
    構築するのもありだと思う。

    マイクロソフトのSQL Server は、
    無償バージョンでも今となっては
    -----------------------------------------
    SQL Server 2017 Express エディション
    コア数:4コア
    メモリ:1,410MB (インスタンスあたり)
    最大データベースサイズ:10GB
    -----------------------------------------
    と、相当な規模のシステムを組まない限り、
    無償バージョンでもいける仕様となっていま
    す。
    マイクロソフト自身も、それぐらいの規模
    だったら「Express エディション」で十分
    じゃないですかって、指南してくれる。

    PostgreSQL に始まり、MySQL に少し手を
    染めて、SQL Server も使っている身として
    は、「SQL Server Express エディション」
    +桐というのは、とても良い環境だと思う。

    https://www.microsoft.com/ja-jp/sql-server/sql-server-2017-editions

    # hidetake の記載物を【多遊】さんのサイト・掲示板以外に
    # (引用の範囲を超えて)転載する場合は、無償サイトであれ、
    # 有償サイトであれ、非公開サイトであれ、元記事にリンクを
    # 貼って下さい。
    # 内容については、若い頃ネット上に書いたものは copyleft
    # 宣言したような気がします。
    # なお、【多遊】さんやほかの方の権利はその方々にあります。
    #
    # と、書いてみるテスト。

引用返信 [メール受信/OFF] 削除キー/
■1275 / ResNo.1)  Re[1]: 桐と外部DB
□投稿者/ 尾形 -(2018/12/12(Wed) 17:25:10)
    どうも、こんにちは

    どこに書こうか迷いましたが
    とりあえずこちらに


    最近、本格的にutf8(桐10)への移行検討を始めました


    PostgreSQLと比較して
    SQL Server 2017 Expressを使うメリット
    は何か感じられますか?



    親データベースも再調査したら
    MariaDBなんてのもあるんですね


    DBテーブル定義の移行
    データの移行
    桐関係ファイル移行


    色々と先は長そうです (^^;


引用返信 [メール受信/OFF] 削除キー/
■1276 / ResNo.2)  Re[2]: 桐と外部DB
□投稿者/ hidetake -(2018/12/12(Wed) 21:55:40)
    2018/12/14(Fri) 09:08:48 編集(投稿者)
    2018/12/12(Wed) 22:48:04 編集(投稿者)

    ども、尾形さん

    元々の記事を書きながら、いい加減な答えしか
    出来ないのですが、

    桐の共有で、桐のテーブルを使って苦労する
    ぐらいなら、「外部DB」の方が良い!! 良いと
    言うより、「外部DB」でいいんじゃない!? 的な
    意味合いが大きいのですが、 (^^;

    じゃ〜、DBMS は何が良いの!? と言われると、
    SQL Server 2017 Express エディション で
    いいんじゃない!! って言う、雰囲気が大きい
    です。

    PostgreSQL は、現在でも生きているシステムで
    使っていますが、最近ではあまり、面倒も見て
    いないです。
    LAN内での使用となりますが入力は MAC を含め
    WEB経由で入力を行い、その集計や請求・入金
    業務を桐で行っております。

    MySQL は、基本的には WEBシステムの DB と
    して使いながら、その DB にアップロードする
    データを桐で管理しているのがメインで、桐で
    積極的なシステムを組んでいるわけではありま
    せん。

    Microsoft SQL Server は、入力は基本的には
    VPN経由で WEBシステムで行い、その決裁や
    集計、会計処理を桐で行っております。

    手がけた順も先に書いたとおりですが、基本
    的に、管理工学研究所は、桐の「外部DB」を
    Microsoft SQL Server をターゲットに開発
    したんじゃない!! って、言う思いも、基本的
    には感じております。

    PostgreSQL は、20年ぐらい前から桐で遊び
    始めたわけですが、DBMS の基本性能がどうの
    こうのと言うような処理はしていないのです
    が、桐で使う場合は、テーブル名の大文字・
    小文字の桐側の問題で、苦労した覚えがあり
    ます。
    あと、ODBCドライバも出しているところが
    複数あり、ドライバによって、動きの異なる
    動作もあり、その動作確認も必要だったりも
    しました。

    Microsoft SQL Server は、3年ぐらい前に
    VB で作られたシステムを桐に移植したの
    ですが、元々が SQL Server 2008 STD だった
    ので、そのままデータが流用できるのを
    確認して、SQL Server 2014 Express を使用
    し開発を行いましたが、PostgreSQL で苦労
    したような問題に苦労させられることもなく、
    単に桐の「外部DB」も問題というか、それを
    使いこなすことだけのスキルが必要なだけで
    した。

    SQL Server Express は有償バージョンと
    違って、タスクをスケジュールで使うことが
    できない。すなわち、スケジュールでバック
    アップを取ったり、スケジュールで、DB を
    最適化したり、圧縮することは出来ないの
    ですが、バックアップについては、タスク
    スケジューラで、SQLPS.exe を使ったり、
    Power Shell で取る事も可能です。
    最適化や圧縮は手動で行うしかありませんが…

    PostgreSQL の場合は、その点、自由にコント
    ロールできるし、バックアップも楽ちんです。

    あと、DBMS を管理する「SQL Server Management Studio」
    も、有償版と同じく、スケジュールや、もっと
    高機能で我々が必要とする機能以外が、何も
    不自由なく使えます。

    そんなこんなで、わたし自身が SQL Server
    に慣れたこともあり、桐の「外部DB」は、
    Microsoft SQL Server で、いいんじゃない!!

    桐の「外部DB」って、Microsoft SQL Server
    をターゲットに開発したのだろうし!?

    って、感じです。 (^^;

    # hidetake の記載物を【多遊】さんのサイト・掲示板以外に
    # (引用の範囲を超えて)転載する場合は、無償サイトであれ、
    # 有償サイトであれ、非公開サイトであれ、元記事にリンクを
    # 貼って下さい。
    # 内容については、若い頃ネット上に書いたものは copyleft
    # 宣言したような気がします。
    # なお、【多遊】さんやほかの方の権利はその方々にあります。
    #
    # と、書いてみるテスト。



引用返信 [メール受信/OFF] 削除キー/
■1277 / ResNo.3)  Re[3]: 桐と外部DB
□投稿者/ 尾形 -(2018/12/13(Thu) 05:39:06)
    どうも、ありがとうございます


    > 桐の共有で、桐のテーブルを使って苦労する
    > ぐらいなら、「外部DB」の方が
    そうですよね

    DBMSだと、そもそも「共有」の意識すら無いですので

    共有というより整合性かな


    桐が、推奨DBMSを提示してくれればなぁ
    なんて思ったり


引用返信 [メール受信/OFF] 削除キー/
■1278 / ResNo.4)  Re[4]: 桐と外部DB
□投稿者/ 尾形 -(2018/12/13(Thu) 09:06:52)
    桐10


    シェル実行 動作=<アクション名>,プロセス番号=<変数名>


    動作、プロセス番号 が正式にサポートされたみたいですね

引用返信 [メール受信/OFF] 削除キー/
■1279 / ResNo.5)  Re[4]: 桐と外部DB
□投稿者/ hidetake -(2018/12/13(Thu) 21:06:38)
    2018/12/14(Fri) 09:09:27 編集(投稿者)
    2018/12/13(Thu) 21:14:36 編集(投稿者)

    「外部DB」を使う場合、単純な結合や単表は別ですが、
    少しでも桐で結合させる場合にめんどくさい場合は、
    SQL Server 側でビューをつくって、それを桐で参照
    しています。もちろん、そのビューに対しての抽出
    条件は、桐側のパラメータで指定し抽出しています。

    桐の共有なんか使うより、一瞬で抽出できます。

    その結果に元に、データに更新が発生する場合など
    はワークファイルに読み込み、その結果を必要な
    実際のテーブルに入力・訂正・削除を行うわけです
    が、その際にはトランザクション処理を入れていま
    す。1つでもエラーなどが発生した場合は、ロール
    バックさせています。

    あと、Microsoft SQL Server を使う場合、主キーに
    IDENTITYプロパティがセットしてある場合は、面倒
    ですね。
    追加の際だけは、主キー項目を外す必要があります。
    でも、その追加された結果の主キーの値は、その場
    では判断できない。再抽出して、結果を得る必要が
    ある。

    自分の場合は、IDENTITYプロパティは外して、
    トリガーでカウントアップするようにしました。
    で、桐から追加する場合は、1件ずつとは限らない
    ので、追加する前にトリガーを無効にしてから、
    桐側から追加する。追加が終わったら、トリガーを
    有効にする。

    次のような SQL を

    &SQL="件数',count(*) FROM tblWork; ALTER TABLE [tblName] DISABLE TRIGGER ALL; -- "

    &SQL="件数',count(*) FROM tblWork; ALTER TABLE [tblName] ENABLE TRIGGER ALL; -- "

    「コマンド実行結合表」に与えて、SQL Server を
    制御しています。

    IDENTITYプロパティつけたまま、

    SET IDENTITY_INSERT [テーブル名] ON;
    SET IDENTITY_INSERT [テーブル名] OFF;

    でも、良いのかな。

    この辺の処理は DBMS ごとに異なるので、慣れが
    必要ですね。

    # hidetake の記載物を【多遊】さんのサイト・掲示板以外に
    # (引用の範囲を超えて)転載する場合は、無償サイトであれ、
    # 有償サイトであれ、非公開サイトであれ、元記事にリンクを
    # 貼って下さい。
    # 内容については、若い頃ネット上に書いたものは copyleft
    # 宣言したような気がします。
    # なお、【多遊】さんやほかの方の権利はその方々にあります。
    #
    # と、書いてみるテスト。

引用返信 [メール受信/OFF] 削除キー/
■1280 / ResNo.6)  Re[5]: 桐と外部DB
□投稿者/ hidetake -(2018/12/14(Fri) 08:19:54)
    2018/12/14(Fri) 09:08:18 編集(投稿者)

    > SQL Server 側でビューをつくって、それを桐で参照
    > しています。もちろん、そのビューに対しての抽出
    > 条件は、桐側のパラメータで指定し抽出しています。

    これは、ODBCドライバと桐の連携の関係もあります。
    桐は ODBCに対し、テーブルのエイリアスに対応して
    いるか確認し、対応してればテーブル名をエイリアス
    で問い合わせます。A1、A2、A3 …

    なので、#DSQL で SQL を投げかけると、桐は
    パススルーで処理するので、テーブル名を実名で無く
    エイリアスで使っているエイリアス名で指定する必要が
    出てきます。

    Mcrosoft SQL Server に対し桐はエイリアス名で処理
    するので、その辺もいろいろ面倒が出てくる。

    それならば、最初から SQL Server 側でビューで処理
    した方が簡単だと言うことで結果です。

    SQL Server Management Studio (SSMS) も常時使う
    ことに、使いこなすことになります。

    # hidetake の記載物を【多遊】さんのサイト・掲示板以外に
    # (引用の範囲を超えて)転載する場合は、無償サイトであれ、
    # 有償サイトであれ、非公開サイトであれ、元記事にリンクを
    # 貼って下さい。
    # 内容については、若い頃ネット上に書いたものは copyleft
    # 宣言したような気がします。
    # なお、【多遊】さんやほかの方の権利はその方々にあります。
    #
    # と、書いてみるテスト。

引用返信 [メール受信/OFF] 削除キー/
■1283 / ResNo.7)  Re[6]: 桐と外部DB
□投稿者/ hidetake -(2018/12/16(Sun) 12:47:31)
    桐で「外部DB」を本格的に使うには、SQL文をそのまま
    SQL に流したいことも多くなります。必要になります。

    その場合は、VBScript で投げかけることも可能では
    ありけど、やはり桐内で完結できた方がスマートです。

    ただ、このやり方は桐の脆弱性を突いたトリッキーな
    方式です。桐9 でも 桐10 でも一応使えます。

    そのような場合は、SQL Server 側に作業用のテーブル
    を1つくります。

    適当で構わないのですがサンプル的には
    ----------------------------------------------------------------------------------
    USE [TEST_DB]
    GO

    /****** Object: Table [dbo].[tblWork] Script Date: 2018/12/16 12:21:30 ******/
    SET ANSI_NULLS ON
    GO

    SET QUOTED_IDENTIFIER ON
    GO

    CREATE TABLE [dbo].[tblWork](
    [id] [bigint] NOT NULL,
    [name] [nchar](10) NULL,
    [count] [bigint] NULL,
    CONSTRAINT [PK_tblWork] PRIMARY KEY CLUSTERED
    (
    [id] ASC
    )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
    ) ON [PRIMARY]

    GO
    ----------------------------------------------------------------------------------

    桐側の .XVX は添付する画像のように

    tblWork に対し、

    ----------------------------------------------------------------------------------
    表示項目名 所属対象表 項目/計算式 データ型 抽出
    項目000 (計算項目) &SQL 文字列 レ
    項目001 (計算項目) " " 文字列 レ
    項目002 (計算項目) " " 文字列 レ
    項目003 (計算項目) " " 文字列 レ
    項目004 (計算項目) " " 文字列 レ
    項目005 (計算項目) " " 文字列 レ





    (必要な項目数で)
    ----------------------------------------------------------------------------------
    パラメータ変数として「SQL:文字列」を設定します。


    そしたら、あとは &SQL 次のような値を代入し外部DBを
    開くことで、実行可能です。

    例えは、トリガーを無効にしたい場合は
     &SQL="件数',count(*) FROM tblWork; ALTER TABLE [tblName] DISABLE TRIGGER ALL; -- "

    例えは、トリガーを有効にしたい場合は
     &SQL="件数',count(*) FROM tblWork; ALTER TABLE [tblName] ENABLE TRIGGER ALL; -- "

    例えば、任意のテーブルを開きたい場合は
     &SQL="', * FROM tblName ; -- "


    元記事は下記にありますが、わかりやすいようにまとめ
    ました。

    http://tayu.o0o0.jp/bbs/kiri/cbbs.cgi?mode=al2&namber=5556&page=0&rev=0&no=0&KLOG=36



    # hidetake の記載物を【多遊】さんのサイト・掲示板以外に
    # (引用の範囲を超えて)転載する場合は、無償サイトであれ、
    # 有償サイトであれ、非公開サイトであれ、元記事にリンクを
    # 貼って下さい。
    # 内容については、若い頃ネット上に書いたものは copyleft
    # 宣言したような気がします。
    # なお、【多遊】さんやほかの方の権利はその方々にあります。
    #
    # と、書いてみるテスト。
861×773 => 250×224

1544932051.png
/82KB
引用返信 [メール受信/OFF] 削除キー/
■1287 / ResNo.8)  Re[7]: 桐と外部DB
□投稿者/ hidetake -(2018/12/16(Sun) 19:02:11)
    > SQL Server Express は有償バージョンと
    > 違って、タスクをスケジュールで使うことが
    > できない。すなわち、スケジュールでバック
    > アップを取ったり、スケジュールで、DB を
    > 最適化したり、圧縮することは出来ないの
    > ですが、バックアップについては、タスク
    > スケジューラで、SQLPS.exe を使ったり、
    > Power Shell で取る事も可能です。

    本文に書くと、迷惑投稿で書き込めないので
    添付ファイルにしてみます。



    # hidetake の記載物を【多遊】さんのサイト・掲示板以外に
    # (引用の範囲を超えて)転載する場合は、無償サイトであれ、
    # 有償サイトであれ、非公開サイトであれ、元記事にリンクを
    # 貼って下さい。
    # 内容については、若い頃ネット上に書いたものは copyleft
    # 宣言したような気がします。
    # なお、【多遊】さんやほかの方の権利はその方々にあります。
    #
    # と、書いてみるテスト。

1544954531.txt
/3KB
引用返信 [メール受信/OFF] 削除キー/
■1298 / ResNo.9)  Re[1]: 桐と外部DB
□投稿者/ hidetake -(2019/02/23(Sat) 19:20:55)
    > マイクロソフトのSQL Server は、
    > 無償バージョンでも今となっては
    > -----------------------------------------
    > SQL Server 2017 Express エディション
    > コア数:4コア
    > メモリ:1,410MB (インスタンスあたり)
    > 最大データベースサイズ:10GB
    > -----------------------------------------

    WSUS を構築するにあたり、WSUS 用のサーバに標準の
    Windows Internal Database (WID) ではなく、
    SQL Server 2017 Express エディション を入れて試して
    いるけど、最初の段階で 2.5GB 以上のメモリを使用して
    いて不思議に思ったが,落ち着いたら 500MB 程しか
    使わないが、更新ファイルの対象を再設定して、同期を
    かけたら SQL サーバは全体で 3.8GB 程のメモリを使って
    くれている。ちゃんと使ってくれるんだ!?



684×947 => 180×250

SQLServer2017ExpressEditionMemory.png
/71KB
引用返信 [メール受信/OFF] 削除キー/

次のレス10件>

スレッド内ページ移動 / << 0 | 1 >>

このスレッドに書きこむ

Mode/  Pass/

HOME HELP 新規作成 新着記事 ツリー表示 スレッド表示 トピック表示 ファイル一覧 検索 過去ログ

- Child Tree -
- Antispam Version -