前回の Raspberry Pi3 に引き続き、SQLServer とは全く関係のない話題です。
仮想移動体通信(MVNO)の関連です。
今まで au のスマホ( Xperia SOL22 )を使っていましたが、
毎月割(?)が終了したので、実質的に月額の支払いが高くなります。
まあ、もともと高い機種代をキャッシュで支払ったので、それが返ってきただけで、
別に月額利用料が安くなっていたわけではないいんですけど。
こうなると新機種に買い替えて、また毎月割を開始するか?
それだと、また高額な機種代を支払わないとダメ。
今使っている機種は、性能的に不便を感じていないし、
故障もなく、元気に動いている。
そういえば、半年ぐらい前に、勝手に電源が落ちるという不安定な動作になったため、
保証を使って、ほぼ新品になってたんでした。
なので、別に高額な新機種にするメリットはない。
でも、月額利用料が高い。
そこで、一気に、 MVNO に乗り換えることにした。
選んだのは、 au と相性のいい、MINEO 。
au の回線も残しておきたい事情もあったので、別途、古いスマホを中古で買って、
通話専用プランで au を完全解約しないようにした。
要は2台持ち。
(このあたりの仕掛けは別途書くつもり)
データ通信部分だけを au から MINEO にした状態。
これで、全く不便なく使っていたんですが、
ふと撮影した写真のジオタグがどうも変なところを指している。
GPS はもちろん ON にした状態なのに。
アプリの GPS Status & Toolbox で確認したら、衛星を全く捕捉していない。
何分待っても捕捉しない。
GPS Status & Toolbox は A-GPS のリセットもできるので、やってみたけど、
それでも捕捉しない。
MINEO の説明を掘り返したら、「 A-GPS には対応していません。」となっている。
なんてこった!
でも、 WIFI から A-GPS をダウンロードしてるはずなのに、全く捕捉しないし、
A-GPS が無くても、広場で15分も放置すれば捕捉できると思うけど、
それでもダメ。
これはこのスマホ本体の GPS 機能が故障している?
2016年6月19日日曜日
2016年5月13日金曜日
Raspberry Pi3 がやってきた
このブログにはSQLServer系の話題を書いていくつもりでしたが、
他に楽しいことが出来てしまったので、それも書いてみます。
Raspberry Pi3 を購入しました!
とりあえず、OSをインストールして、Winndows系のパソコンからリモートログインできるとこまでできました。
めちゃくちゃコンパクト(手洗い石鹸ぐらいの大きさ)ですが、NEC PC9800 系のパソコンよりよっぽど性能がいいですね。
しかも、簡単。
OSやその他のアプリケーションのインストールも、Android系のGoogle Playストアと同じような感覚で、簡単にできます。
所々に、GUI環境が用意されていないために、昔ながらのエディタを使う場面もあって、
それはそれなりに懐かしくて面白いです。
当面、こっち系の情報を書いていきます。
他に楽しいことが出来てしまったので、それも書いてみます。
Raspberry Pi3 を購入しました!
とりあえず、OSをインストールして、Winndows系のパソコンからリモートログインできるとこまでできました。
めちゃくちゃコンパクト(手洗い石鹸ぐらいの大きさ)ですが、NEC PC9800 系のパソコンよりよっぽど性能がいいですね。
しかも、簡単。
OSやその他のアプリケーションのインストールも、Android系のGoogle Playストアと同じような感覚で、簡単にできます。
所々に、GUI環境が用意されていないために、昔ながらのエディタを使う場面もあって、
それはそれなりに懐かしくて面白いです。
当面、こっち系の情報を書いていきます。
2016年3月12日土曜日
SQLServer 64bit 上で SQLServer 32bit をリンクサーバーに設定した場合、アクセスできない!
64bit で動作している SQLServerから32bit で動作しているSQLServer に対してリンクサーバーを設定しようとするとリンクサーバー自体は作成できますが、リンクサーバー内のテーブル対して、ビューを作成することはできません。(テーブルを参照することができません。)
なぜなんでしょうね?
ところが、シノニムを使えば、向こう側のテーブルを参照することができます。
CREATE SYNONYM dbo.こっちの名前 FOR リンクサーバー名.dbo.向こうの名前
これでOK!
なぜなんでしょうね?
ところが、シノニムを使えば、向こう側のテーブルを参照することができます。
CREATE SYNONYM dbo.こっちの名前 FOR リンクサーバー名.dbo.向こうの名前
これでOK!
2016年1月30日土曜日
シノニムってなんや?
「シノニム」っていう単語を知らなかったので、無視してましたが、直訳すると、「同意語」とかいう意味だそうです。
SQLServer 2005 以降ですが、
これ、意外とめっちゃ便利かも。
他のデータベースのオブジェクトをそのまま「別名を付けて」利用することができます。
今までは、ビューを作って接続していましたが、「Synonym」を使うと、元のデータベースと同じ名前で作成することもできるので、ほぼ、元のデータベースと同じオブジェクトような感覚で扱うことができます。
作成する際も、「 CREATE SYNONYM こっち側のテーブル名 FOR あっち側のサーバー名.データベース名.スキーマ.テーブル名 」で簡単に作成できます。
元になるデータベースのテーブル一覧は、「 Select * from sys.Tables 」で全部取ってこれますので、ループでぐるぐる回せば、あっち側のすべてのテーブルをシノニムにすることが簡単にできてしまいます。
(もちろん、あっち側のビューとかもとってこれます。)
同じデータを利用した別のシステムを構築するときに、同じデータベース内にビューなどのオブジェクトをどんどん作っていくと、名前付けに苦労します。
こんな時に、システム別にそれぞれデータベースを作って、それぞれのデータベース側は全部シノニムで接続しておけば、元のデータベース内と同じ感覚で作業できます。
SQLServer 2005 以降ですが、
これ、意外とめっちゃ便利かも。
他のデータベースのオブジェクトをそのまま「別名を付けて」利用することができます。
今までは、ビューを作って接続していましたが、「Synonym」を使うと、元のデータベースと同じ名前で作成することもできるので、ほぼ、元のデータベースと同じオブジェクトような感覚で扱うことができます。
作成する際も、「 CREATE SYNONYM こっち側のテーブル名 FOR あっち側のサーバー名.データベース名.スキーマ.テーブル名 」で簡単に作成できます。
元になるデータベースのテーブル一覧は、「 Select * from sys.Tables 」で全部取ってこれますので、ループでぐるぐる回せば、あっち側のすべてのテーブルをシノニムにすることが簡単にできてしまいます。
(もちろん、あっち側のビューとかもとってこれます。)
同じデータを利用した別のシステムを構築するときに、同じデータベース内にビューなどのオブジェクトをどんどん作っていくと、名前付けに苦労します。
こんな時に、システム別にそれぞれデータベースを作って、それぞれのデータベース側は全部シノニムで接続しておけば、元のデータベース内と同じ感覚で作業できます。
2015年11月21日土曜日
専用の tnsnames.ora でAccess MDB から ORACLE にリンクを張る
通常 tnsnames.ora ファイルは、管理者権限がないと修正できません。
しかし、その端末に OracleClient さえ入っていれば以下の方法で tnsnames.oraを修正しなくても Access からODBC接続することができます。
本来の tnsnames.ora は %OracleHome%\NETWORK\ADMIN\ にあります。
これは修正不可です。
そこで、
Access の MDBファイルと同じところに専用の tnsnames.ora と、専用のファイルデータソース(hoge.dsn など)を作成する。
これで、Access から通常のリンクテーブルの方法でODBCリンクを張れます。
tnsnames.ora の例
Agyomu_hoge01 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = hoge01)(PORT = 1521))
(CONNECT_DATA =
(SERVICE_NAME = Agyomu)
)
)
赤字が、ファイルデータソースを作成するときに頼りにする、接続用のニックネームのようなものです。
緑字が、ORACLEのデータベースが存在するサーバーの名称です。IPアドレスで指定することも可能。
青字が、接続したいデータベースの名称(=サービス名)です。
しかし、その端末に OracleClient さえ入っていれば以下の方法で tnsnames.oraを修正しなくても Access からODBC接続することができます。
本来の tnsnames.ora は %OracleHome%\NETWORK\ADMIN\ にあります。
これは修正不可です。
そこで、
Access の MDBファイルと同じところに専用の tnsnames.ora と、専用のファイルデータソース(hoge.dsn など)を作成する。
これで、Access から通常のリンクテーブルの方法でODBCリンクを張れます。
tnsnames.ora の例
Agyomu_hoge01 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = hoge01)(PORT = 1521))
(CONNECT_DATA =
(SERVICE_NAME = Agyomu)
)
)
赤字が、ファイルデータソースを作成するときに頼りにする、接続用のニックネームのようなものです。
緑字が、ORACLEのデータベースが存在するサーバーの名称です。IPアドレスで指定することも可能。
青字が、接続したいデータベースの名称(=サービス名)です。
2015年11月8日日曜日
インターネットに接続できない環境でアプリケーションの起動が異常に遅い
今回は SQLServer についてではありません。
社内でクローズ(インターネット接続なし)のネットワーク環境があり、
そこで使用するHTTPを使用したアプリケーションの起動が異常に遅いことがありました。
通常15秒程度で起動するはずが、最大2分ほど必要。
これは使用に耐えない。
色々調べましたが、開発元からの回答は、
「インターネットオプションで、セキュリティーを『信頼済みサイト』から『ローカルイントラネット』に変更してください。」とのことでした。
しかし、いまいち。
よくよく確認したら、「前提条件として、インターネットオプションの『発行元証明書の取り消しを確認する』がOFFになってますよね?」とも。
私「えっ?なってないよ。」
開発元「いや、私が先日設定しました。」
私「でも、なってない。とりあえず、OFFにしてみるね。」
おお!15秒で起動するやん。
私「やっぱり、問題は証明書の取り消しでした。OFFにしてくれてないやん。」
開発元「いや、しました。ドメインアドミニ権限で。」
それ!
この「発行元証明書の取り消しを確認する」はユーザー単位なんですね。
なので、開発元さんが設定してくれたのは、アドミニの時だけ効いて(OFF)ました。
「発行元証明書の取り消しを確認する。」とは、
事前にアプリケーションの開発者が申請してあった、発行元証明書(正しく作成されたアプリであることを証明する電子署名)が、現在も取り消されていないかどうかを、インターネットで確認するものだそうです。
なので、インターネットに接続できない環境では、タイムアウトするまで待ち続けます。
クローズ環境ではONにする必要は全くないですね。
社内でクローズ(インターネット接続なし)のネットワーク環境があり、
そこで使用するHTTPを使用したアプリケーションの起動が異常に遅いことがありました。
通常15秒程度で起動するはずが、最大2分ほど必要。
これは使用に耐えない。
色々調べましたが、開発元からの回答は、
「インターネットオプションで、セキュリティーを『信頼済みサイト』から『ローカルイントラネット』に変更してください。」とのことでした。
しかし、いまいち。
よくよく確認したら、「前提条件として、インターネットオプションの『発行元証明書の取り消しを確認する』がOFFになってますよね?」とも。
私「えっ?なってないよ。」
開発元「いや、私が先日設定しました。」
私「でも、なってない。とりあえず、OFFにしてみるね。」
おお!15秒で起動するやん。
私「やっぱり、問題は証明書の取り消しでした。OFFにしてくれてないやん。」
開発元「いや、しました。ドメインアドミニ権限で。」
それ!
この「発行元証明書の取り消しを確認する」はユーザー単位なんですね。
なので、開発元さんが設定してくれたのは、アドミニの時だけ効いて(OFF)ました。
「発行元証明書の取り消しを確認する。」とは、
事前にアプリケーションの開発者が申請してあった、発行元証明書(正しく作成されたアプリであることを証明する電子署名)が、現在も取り消されていないかどうかを、インターネットで確認するものだそうです。
なので、インターネットに接続できない環境では、タイムアウトするまで待ち続けます。
クローズ環境ではONにする必要は全くないですね。
2015年9月27日日曜日
SQLServer からリンクサーバーでつないだOracle に OpenQuery を発行 その2
SQLServer からリンクサーバーで ORACLE につなぐのは、結構みなさんやりたいようですね。
以前に書いた「SQLServer からリンクサーバーでつないだOracle に OpenQuery を発行」に結構アクセスをいただいています。
この時の例では、条件に数値を入れていますのであまり問題ないのですが、文字列を条件に入れる場合、クォーテーション「'」の数で悩むときがあります。
条件が数値の場合は、
SELECT * FROM OPENQUERY(OraLink, 'SELECT * FROM hoge Where ID = 1')
これでいいんですけど、
条件が文字の場合は、
SELECT * FROM OPENQUERY(OraLink,
'SELECT * FROM hoge Where name like ''hagehage%'' ')
ということになります。
SQLServer がクォーテーテョンを2個並べると1個分と判断するので、
実際にORACLE に投げられるSQL文は、
SELECT * FROM hoge Where name like 'hagehage%'
ということになります。
以前に書いた「SQLServer からリンクサーバーでつないだOracle に OpenQuery を発行」に結構アクセスをいただいています。
この時の例では、条件に数値を入れていますのであまり問題ないのですが、文字列を条件に入れる場合、クォーテーション「'」の数で悩むときがあります。
条件が数値の場合は、
SELECT * FROM OPENQUERY(OraLink, 'SELECT * FROM hoge Where ID = 1')
これでいいんですけど、
条件が文字の場合は、
SELECT * FROM OPENQUERY(OraLink,
'SELECT * FROM hoge Where name like ''hagehage%'' ')
ということになります。
SQLServer がクォーテーテョンを2個並べると1個分と判断するので、
実際にORACLE に投げられるSQL文は、
SELECT * FROM hoge Where name like 'hagehage%'
ということになります。
登録:
投稿 (Atom)