ウィリアムのいたずらの開発日記

ウィリアムのいたずらが、コンピューター関係について、思ったことを好き勝手に書いているブログです。

sqlcmdで、-U ユーザー名指定すると、「ユーザー~は、ログインできませんでした。。」

2018-09-20 09:40:38 | ネットワーク
【問題】
sqlcmd -Eオプションで入ると、入れる。だけど、
sqlcmd -Uオプションで入ると

となって入れない


【理由】
いろいろやったので、これか・・・確かではないのだが、
SSMSで、サーバー認証を変えたら、うまくいった(それまでうまくいかなかった)

【方法】
SSMSを立ち上げて、一番上のものを、右クリック「プロパティ」を選択

左上の「セキュリティ」を選択、「サーバー認証」を「SQLサーバー認証モードとWindows認証モード」にする



JDK8でビルドできたものがJDK11だとできないとか、Open JDKの8に移行する話

2018-09-19 08:46:21 | JavaとWeb
OracleのJDKのリリースとサポートがあんなことになってしまい、
傷心モードになっているJavaのエンジニアの心の傷に、てらだよしおさんが、
塩を塗るようなデモをみてきた・・・

9月19日、日本 GlassFish ユーザー会の

【JDK 11 リリース直前】各ベンダーのJDKリリースモデル特集!
https://glassfish.doorkeeper.jp/events/78762


を聞いてきたのでメモメモ

なお、表題の件、寺田さんのデモは最後のほうにでてくる。




■Azul System Your Long Term Java Partner
・会社紹介
・Zing:ガベージコネクション レスポンスいいJVM
・Zulu:エンタープライズ、エンベディッド ARMに対応
・JavaSEアップデート&ロードマップ
 6か月ごとにアップデート:
 Java8の公開アップデート収量は2019年1月
 非LTSリリースを使用するとJDK12から潜在的なリスクが生じる

・Zing ヒープ8TBまでサポート
 ファルコンLLVMに基づく

・ユースケース

Q&A
・ZuluとZuluエンタープライズの違い
  Zulu ダウンロードはできる。それをしただけでは、サポート対象外
  Zuluエンタープライズ 会社で使う場合
  Zuluエンベディッド なにかに組み込んで使う場合。契約が違う


■オープンソースで提供される第二のJVM
 OpenJ9 VMとIBM Javaについて

・OpenJDK/OracleJDK

・IBM SDK for Java Technorogy
 J9VM
 サーバーでの使用に特化している
   クライアント、組み込みは対象外
 2017年までは単独提供なし
 2018年以降は、オープンソース提供

・IBM J9 VM
 IBM内でクリーンルーム開発(Oracleのライセンスに縛られない)
 Power,大型汎用機でも使えるように開発

・特徴
 先進的な機能を率先
   クラス共有
   参照圧縮:64ビット→ヒープが増える:32ビットに圧縮(アラインメント8バイト→3ビット切り捨てられる)
   メトロノームGC

 多彩な問題判別機能
   Java DUMP(Javacore)

・OpenJ9
 オープンソースに
 2段階
  コアの部分 Eclipse OMR Javaだけでない汎用環境(COBOL,PL/I、Ruby)
  OMRの上にJ9VMをOSSとして公開
 EPLとAPLのデュアルライセンス

・2018年以降のIBM
 OpenJDKが正になっている

 OpenJDK+OpenJ9
 IBM SDK forJava

・OpenJDK+OpenJ9
 無償(OSS)
  入手方法(1)
    Adopt OpenJDK https://adoptopenjdk.net

  入手方法(2) Docker Hubから
    https://hub.docker.com/u/adoptopenjdk

・サポートも提供
  IBM Support for Runtime
    年間54800円
  →Oracle:クラウド環境の場合割高になるケースも
 障害サポート

・IBM SDK for Java Technology
  AS400にも対応、IBM JCE(暗号化ライブラリ)
  ソフトウェア同梱(Docker環境のみ単独も)
  LTSを適用

・Dockerイメージの入手方法
 https://hub.docker.com/_/ibmjava/
 ライセンスILAN
 IBMの多くの製品がDocker環境→DB2とかも
 IKS IBM くーばねーてぃす サービス
 プライベート、ベアメタル
  ICP

・OpenJDK 8 2022年までサポート
 Java11も終わり決定していないけど、長期間サポート

・IBM JavaEE アプリケーションサーバー
 WebSphere: Libertyランタイムは軽い
  月額5524円
 Open Libertyというのがでている。

 Oracleさんからパッチ提供を受けている

■”マイクロソフトの”寺田さんからのお話
・Java11のリリースを控えて
・自己紹介
・今後のJavaに関して
  今まで3年に1回
  それがなぜ半年に変わったか?
    IT業界:3年はすごく長い→価値のないものに変わっていった
 →Javaの開発・提供もアジャイル的に
 Windows10 10の中でもアップデート
  今の時代に合わせた話
・JDK10よりDockerコンテナの対応強化
   ヒープメモリの割り当てを調整可能
・JDK11が今月正式リリース
  ぜひ、早めに触って→結構大変!
 でも:
  JDK8だと動くけどJDK11→エクセプションが出て落ちる
 今まで動いていたアプリが11だと動かなくなる可能性がある
 あげていただきたいんです!
 早めにどっちの問題か、(製品側の問題か、自分たちの問題か)

・JDK11から削除されるパッケージ
  XML系、CORBAが取り除かれる!
 自分が作ったアプリなら→依存関係を追加する

・なぜ11へ 
 カスタムのスモールJDKの作成:小さいオブジェクトのものが作れる
   →Dockerに組み込んで

■お知らせ
・RedHatのOpenJDKのサポート
 →ブログを読め
 タグで検索すれば、みつかるはずだ!




【所感】

表題の件は、11になると、XML系などのライブラリが削除されるから。
寺田さんは11にあげてくださいっていうけど、
これじゃ、怖くて上げられない。
OpenJDKに移行して、延命する?

C#で、SQLServerへ、さっき作ったテーブルにアクセスする。

2018-09-18 16:03:27 | ネットワーク
ちなみに、前のエントリで作ったテーブルに、C#でアクセスするには、こんなかんじ。

using System.Text;
using System.Threading.Tasks;
using System.Data.SqlClient;


namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            // データベース接続
            try
            {
                var mycon = "Data Source =.\\SQLEXPRESS;Integrated Security=False;User ID=sa;Password=sa;Database=testdb";
                var connection = new SqlConnection(mycon);
                connection.Open();

                // SQLの実行
                var command = new SqlCommand();
                command.Connection = connection;
                command.CommandText = @"SELECT * FROM emp_tbl";
                var reader = command.ExecuteReader();
                while (reader.Read() == true)
                {
                    Console.WriteLine("rec id={0} name={1}", reader["id"], reader["name"]);
                }
                Console.ReadLine();

                // データベースの接続終了
                connection.Close();
                Console.WriteLine("*******  end   ***********");

            }
            catch (Exception exception)
            {
                Console.WriteLine(exception.Message);
                throw;
            }
        }
    }
}



これは、接続文字列をプログラムに埋め込んじゃう方法だけど、
app.configとかに書くほうが普通だと思う。
その方法は、

C# で SQL Server に 接続する 方法
https://garafu.blogspot.com/2016/05/how-to-connect-sqlserver-wcs.html


参照(上記プログラムもそれを参照している)

また、これとは全く違った方法で、LINQ to SQLでテーブルアクセスできる。
くわしくは

連載! とことん C#: 第 21 回 LINQ to SQL で楽々クエリ
https://code.msdn.microsoft.com/windowsdesktop/21-LINQ-to-SQL-5de086c7

SQL ServerのコマンドラインでDB作成、テーブル一覧表示

2018-09-18 09:49:15 | Weblog
前に、
Oracle,SQLServer,PostgreSQL,MySQLのコマンドライン、GUIツール
https://blog.goo.ne.jp/xmldtp/e/1b2e211bb81f7715fd5b6eca1e8abb18

で、コマンドラインの操作では、DBの作成や一覧、テーブルの一覧などの操作が異なると書いた。

そこで、SQL Serverが手元にあるので、コマンドラインsqlcmdを使った例。

>がプロンプトで、ここを入力している。本当のプロンプトは半角>だが、編集の都合、全角の>にしている。
赤字は、あとで説明する箇所。

C:\Users\user>sqlcmd -S .\SQLEXPRESS -U sa -P sa
1> select name from sys.databases
2> go
name                                                                                                                    
--------------------------------------------------------------------------------------------------------------------------------
master                                                                                                                  
tempdb                                                                                                                  
model                                                                                                                   
msdb                                                                                                                    
test                                                                                                                    

(5 行処理されました)
1> drop database test
2> go
1> select name from sys.databases
2> go
name                                                                                                                    
--------------------------------------------------------------------------------------------------------------------------------
master                                                                                                                  
tempdb                                                                                                                  
model                                                                                                                   
msdb                                                                                                                    

(4 行処理されました)
1> create database testdb
2> go
1> select name from sys.databases
2> go
name                                                                                                                    
--------------------------------------------------------------------------------------------------------------------------------
master                                                                                                                  
tempdb                                                                                                                  
model                                                                                                                   
msdb                                                                                                                    
testdb                                                                                                                  

(5 行処理されました)
1> use testdb
2> go
データベース コンテキストが 'testdb' に変更されました。
1> create table emp_tbl(
2>     id int primary key,
3>     name nvarchar(20),
4> );
5> go
1> select name from sysobjects where xtype = 'U'
2> go
name                                                                                                                    
--------------------------------------------------------------------------------------------------------------------------------
emp_tbl                                                                                                                 

(1 行処理されました)
1> insert into emp_tbl(id,name) values (1,'member1')
2> go

(1 行処理されました)
1> select * from emp_tbl;
2> go
id          name
----------- --------------------
          1 member1

(1 行処理されました)
1> quit

C:\Users\user>



【説明】
・select name from sys.databases
 データベース一覧の表示

・drop database test
 データベースの削除

・create database testdb
 データベースの作成

・use testdb
 データベースの中に入る(利用するというか選択するというか・・)

・select name from sysobjects where xtype = 'U'
 テーブル一覧の表示

※実行させるには、goと打つ必要がある
※あとはふつうのSQLと同じ、Create Tableとかinsert,selectとか・・

【参考サイト】
sqlcmd の使い方
http://www.geocities.jp/kandou_quester/Knowledge/Programming/SQL/_how_to_use_sqlcmd.html

ドローンって、結局、災害で役立っているの?

2018-09-17 16:54:31 | Weblog
昔、ドローンが流行っていた時、ドローンの防災/災害時利用とか言っていたけど、
今どうなんでしょうね?

南硫黄島の研究に役立っていることは、NHKスペシャルでわかったけど・・・

秘島探検 東京ロストワールド 第1集 南硫黄島
http://www6.nhk.or.jp/special/detail/index.html?aid=20180916_2


そうそう、ロボットとかもどうなんだろう。
福島第一原発で頑張っていることはサイエンスZEROでわかったけど・・・

サイエンスZERO▽シリーズ原発事故(18)新技術で挑め!見えざる廃炉のリスク
http://www4.nhk.or.jp/zero/x/2018-09-16/31/24405/2136689/