2021年5月12日水曜日

SQL Server リンクサーバーを使って ACCESS accdb にデータをコピー

  • アクセス側からデータを引っ張る
  • SQL Server 側からデータを送る
  • アプリケーションでSQL Server からデータを引っ張りアクセスに送る

など色々と方法は考えられるかと思いますが、そのうちの一例「SQL Server から accdb にリンクサーバーで接続し、データを出力する方法」をメモしておきます。


構成

  • Windows Server 2019 64bit
  • SQL Server Web 2019 64bit
  • IIS 10
開発環境は
  • Windows 10 Pro 64bit
  • SQL Server 2019 Express 64bit
  • Visual Studio 2019
  • Office 2019 32bit


初めに空のaccdbファイルを作成して必要な場所に配置しておくと良いです。ACCESSのインストールされていない環境でもaccdbファイルを作成することが出来るようですが、詳細は検索してください。


64bit SQL Server からACCESS accdbファイルに接続するには 64bit 版の Microsoft.ACE.OLEDB が必要です。未インストールの場合は以下から入手できます。(ただし、64bit版と32bit版の共存にはトラブルがあるようで、既に32bit版Officeの入っていた私の開発環境ではACCESSが起動しなくなってしまいました。)


Microsoft Access データベース エンジン 2016 再頒布可能コンポーネント

https://www.microsoft.com/ja-JP/download/details.aspx?id=54920


インストールに成功するとSSMSのサーバーオブジェクト→リンクサーバー→プロバイダーから確認できます。


「リンクサーバー」右クリック→「新しいリンクサーバー」でウィザードが表示され設定できます。




以降は以下のような形でSSMSからリンクサーバーにクエリを投げることができます。

EXEC ('CREATE TABLE Sample (
	Id INTEGER NOT NULL,
	Name TEXT(50) NOT NULL,
	Email TEXT(50)
)') AT [LINKSERVERNAME];

表題のSQLサーバからACCESS accdbにデータを出力するためのクエリを作成しますが、ラクをするために事前に出力先のテーブルをSSMSのエクスポートウィザードで作成しておきます。もちろんCREATE文を書いて対応するテーブルを作成してもかまいません。




以下のストアドプロシージャを作成します。


USE [SampleDB]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE spExportFromSQLtoACCDB 
AS
BEGIN
	SET NOCOUNT ON;

	DELETE FROM [LINKSERVERNAME]...[Sample];
	INSERT INTO [LINKSERVERNAME]...[Sample] SELECT * FROM SampleDB.dbo.Sample
END
GO

このストアドプロシージャを実行すれば SQL Server から accdb へのデータのエクスポートが実行できますが、アプリケーションから実行するにはパーミッションの設定が必要です。 今回の場合は ASP.NET から実行する形でしたので、IISの当該アプリケーションプールIDにaccdb ファイルへの変更権限を付与します。 アプリケーションプールIDはファイルの権限設定ウィンドウに出てこないので「IIS AppPool\DefaultAppPool」のような形で追加します。

以上メモまで。

2021年4月5日月曜日

Visual Studio 2017 2019 ASP.NET MVC で AREA を追加する方法

プロジェクトを右クリック→「追加」→「新規スキャフォールディングアイテム」


「共通」→「MVC」→「区分」

以上、メモまで。

2021年4月3日土曜日

AWS SES の SMTP で EC2 からメール送信

メモだけ


 ・AmazonSES登録

・SMTP Credentials生成(ID,パスワード発行)

・ID承認(メールアドレスまたはドメイン登録)

・同一リージョンで制限解除申請

・EC2のファイアウォール設定(必要に応じて)

・EC2セキュリティグループ設定(アウトバウンドルールに当該のポートを登録)

2021年3月13日土曜日

【IIS】Web Deploy のおさらい

公式の解説は以下などを参考


0. 手順

1. IISのインストール

2. Microsoft Web Deploy のインストール

3.IIS マネージャーユーザーの追加

4. 管理サービスの委任

5. 管理サービスの起動

6. ユーザーの設定を変更

7. ファイアウォールの設定

8. その他セキュリティの設定

9. 出力ディレクトリのパーミッションの設定

10. Web配置による発行の有効化

11. Visual Studio から発行



1. IISのインストール

「役割と機能の追加」からIISをインストール




2. Microsoft Web Deploy のインストール

以下ページからMicrosoft Web Deploy 3.6 をダウンロード

https://www.microsoft.com/ja-jp/download/details.aspx?id=43717




「完全」を選択してインストール



3.IIS マネージャーユーザーの追加

IIS マネージャーを開きIISマネージャーユーザーを追加





4. 管理サービスの委任

WebDeployをインストールした時点で適切な設定になっていると思いますが確認

「WDeployConfigWriter」と「WDeployAdmin」というユーザーが自動で作成されている



5. 管理サービスの起動


ポート変更などを行う場合はここで行う



6. ユーザーの設定を変更

先ほど自動生成されたユーザー「WDeployConfigWriter」と「WDeployAdmin」の設定を変更する

「コンピューターの管理」ツールを起動しユーザーの一覧を表示する


両ユーザーについて、右クリック→プロパティでプロパティ画面を開き「パスワードを無期限にする」にチェックを入れる

(この設定は絶対に必要という訳ではありませんが、パスワードの期限切れである日突然デプロイが出来なくなりハマる事があります)


また、ここで両ユーザーのパスワードを変更した場合は、IISマネージャーの「管理サービスの委任」から、両ユーザーが割り当てられている規則の「編集」画面を開き、「資格情報の指定」からパスワードを設定します。



7. ファイアウォールの設定

Windows Defender ファイアウォールの設定画面を開き、「受信の規則」→「新しい規則」からデプロイのポート(デフォルトだと8172)を追加する








8. その他セキュリティの設定

ホスト先のサーバーの設定によりますが接続ポートの許可設定などを行います

例えばAWS EC2 であればセキュリティグループの「インバウンドルール」にポートの許可設定を追加します



9. 出力ディレクトリのパーミッションの設定

IISマネージャー、あるいはエクスプローラーから当該ディレクトリの「アクセス許可の編集」を行います


「LOCAL SERVICE」 にフルコントロール権限を与えます



10. Web配置による発行の有効化

IISマネージャーで設定したいサイト上で右クリック→展開→Web配置による発行の有効化を選択します

対象が配下のWebアプリケーションや仮想ディレクトリであっても親サイト上で行います



「発行アクセス許可を付与するユーザーを選択します」のところで先ほど作成したIISユーザーである「webdeploy」を設定します


「設定」を行うと指定した場所に設定ファイル(拡張子 .PublishSettings)が作成されます


11. Visual Studio から発行

Visual Studio のソリューションエクスプローラーで発行したいWebプロジェクトを右クリック→発行を選択します



先ほど出力した設定ファイルを読み込ませます


「編集」をクリックしてパスワードを設定します

サイト配下のアプリケーションや仮想ディレクトリに発行する場合は「サイト名」の箇所にスラッシュ区切りで当該ディレクトリを指定します

接続の検証を押下し、成功するとグリーンのチェックマークが表示されます





WebDeploy を解説してくれているサイトは結構あるのですが、ユーザーパスワードの期限やディレクトリのパーミッション権限などに言及されているのが少なく、自分がちょくちょくハマってしまうのでまとめてみました。

以上です。



2021年3月3日水曜日

AWS EC2 の無料枠が初見殺し過ぎる

 AWSの利用にあたって最初は無料枠があってその枠内でお試しできますよ、でもそれは月750時間制限とか色々あって超えたら課金されますよー

という情報はググれば結構見つかるのですが

今回私が引っかかったのはコチラ

インスタンスを作成する際に「コミュニティAMI」を選び(ちなみに選択したのは「Windows_Server-2019-Japanese-Full-SQL_2017_Web-2020.12.09」)


インスタンスタイプをちゃんと無料枠のt2.microを選択し(ちゃんと無料枠云々に関する説明も表記される)

作成を進めていくと最後の確認画面で「無料利用枠の対象ではありません」となります

インスタンスタイプ選択画面で無料と表記されていたので最後のアラートを見落としてしまいまんまと一月分ほど課金されてしまいました。

無料枠で進めたいのであればイメージ選択画面でちゃんと「無料利用枠の対象」のものを選ばないとダメだったようです

無料と思って試していたら課金されてしまっていたという情報は結構出てくるので、もう少しなんとかして欲しい


2021年2月12日金曜日

2021年2月5日金曜日

Google データ エクスポート

 Google Photoの容量無制限終了を機にGoogle Photoのデータを一括ダウンロードしようと思いました。

こちらのサイトを参考に「Google データ エクスポート」のページから作業を進めます。

出力先を「Google Drive」にて待つこと丸一日以上、届いたメールには


出力先に十分な空き容量が必要のようです。

私のデータは25GBくらいで、Google Photoは一番下の15GBの無料プランなのでこのような結果に。

先に出力可否を計算してから処理を実行してくれよ・・・。


※追記

データのダウンロードはできそうです!
先走って上記の投稿をしてしまいましたが、再びGoogleデータエクスポートの管理画面へ行くと、エクスポート処理の結果が表示されていて「アップロードできませんでした」とはなっているのですが…
ここの「エクスポートを表示」の部分をクリックすると出力されたデータのリストが表示され、その中の「ダウンロード」からダウンロードできるようになっています。

ダウンロードするために一時的に容量を増加しないといけないのかとゲンナリしていましたが、これで解決しそうです。


2021年2月2日火曜日

Myncから乗り換えようと思ってMyncに戻ってきた【画像動画管理ツール】

そもそもこの 「画像動画管理ツール」、あまりニーズがないのか情報も少なくツールの呼称も統一感がなく、そのためエディタやビューワーなど別のツールと紛らわしかったりググるのも一苦労でした。

(画像管理ソフト、メディア管理、コンテンツ管理、画像ビューワー、photo manager、video management software、image organizerなど)

Wikipediaには「Image organizer」として記事があるので一応この名称が一般的なのでしょうか。


このツールに求める機能が個々人で異なっているため一般的でないのかもしれません。

私が重要視していたのは以下のような機能です。
・画像も動画も対応している
・動画はm2ts形式に対応している
・サムネイルで一覧表示でき動作が軽い
・簡単にプレビューできる
・サブフォルダも含めて一覧でき、日付ソートできる

一方で編集機能などは別のアプリケーションで行うため、できれば無い方が好ましい不要な機能でした

[これまで]

1.Playmemories Home

ビデオカメラがSONYだったので最初に使い始めた管理ツール
DB化するためか1ファイル毎に2つのファイルを同じディレクトリに生成しディレクトリを汚してしまう
PlaymemoriesOnlineとの挙動が不安定で同期できたりできなかったり、同じファイルを複数回同期したり
以下記事のようなエラーが発生したり
なかなかのストレスを感じて乗り換えることに

2.Mync

そして乗り換えたのがこちら
概ねの機能は満たしていたのですが、ヘルプやQ&Aなどに多少不満があり、また調べてもあまり情報が無いので主流でないのであればより良いソフトに乗り換えたいと思っておりました


[調査・試用したもの]

3.FavMovieAlbum

かなり以前に試しましたが採用せず、理由は忘れました

4.WhiteBrowser

日本語情報が多かったのがこれ
サムネイルを自由に作成できて、選択したサムネイルから途中再生できるあたりが好評のようでしたが、そもそも私はサムネイルにそこまでこだわりが無かったのと、ファイルを取り込んでそのサムネイルを生成するのに時間がかかりすぎて動作させるに至る前に不採用となりました

5.lightroom

天下のAdobeのソフト
海外サイトでも上位に位置付けられていましたが、「月額課金制」に抵抗があったため不採用
買い切りなら有料でも検討したのですが…

6.tiat

海外サイトではランクインしてるのを見かけなかったのですが、日本語サイトではチラホラ推奨記事を見かけました
サイトの第二言語が中文なので中華系か台湾系なのでしょうか
試してみましたが動画に対応していなかったので不採用としました

7.digiKam

各所で評判が高く、Linuxなどにも対応してる模様
私が求める機能に概ね合致していたのですが、動画のプレビューがカクカクでMyncにおよばず
(もしかしたらカスタマイズや設定で軽快に動かせたのかも)

8.ViewNX-i

PlaymemoriesはSONYでしたが、こちらはNikon
ちょっと理由は忘れてしまいましたが私の用途に合わず不採用(動画が対応していなかった?)
Transferとか余計なソフトもインストールされアンインストールが面倒だったのも少し不評

9.eagle

大手にも採用されているらしい管理ソフト
UIもおしゃれで動画も対応…となっていましたがm2tsが非対応
残念ながら不採用になりました



結果

あまり見つからない情報に苦労した挙句Myncに戻ることにしました。
あとビデオカメラからの動画の取り込みがPlaymemoriesだと自動でリネームなどしてくれたのですが、Myncだと手作業になってストレスだったのですが「仕分けちゃん」というソフトで簡略化できそうです