TECHS のデータを読むための
「読み取り専用ログイン」作成手順

新しい生産管理システムが TECHS のデータを毎晩自動で受け取るための、最初の1回だけの設定です。

所要時間 20〜40分 作業は1回だけ TECHS のデータは変更されません TECHS は止まりません
この手順書について 図はすべてイメージ図です。実際の画面は Windows や SQL Server のバージョンによって細部が異なりますが、押すボタンの名前と順番は同じです。
この環境は「Windows 認証のみ」でした(2026-09-02 実測) そのため パスワード付きのSQLログイン(ff_readonly)は作成できません。 下の「Windows認証のみの場合」の手順に読み替えてください。以降のSQLログイン手順は、 混在モードのサーバー向けに残してあります。

Windows認証のみの場合(この客先はこちら)

SQL Server 側の認証モードを変更する必要はありません。 Windows のアカウントをそのまま SQL Server に登録して、読み取り権限だけを与えます。 サーバーの再起動も不要です。

手順1. 読み取り専用に使う Windows アカウントを作ります(管理者の PowerShell)。

$pw = Read-Host "ff_readonly のパスワード" -AsSecureString
New-LocalUser -Name 'ff_readonly' -Password $pw -PasswordNeverExpires -AccountNeverExpires `
  -Description '生産管理システム連携用(読み取り専用)'

手順2. そのアカウントを SQL Server に登録し、TECHS6 を読むだけの権限を与えます (SSMS で実行。TECHS-SERVER は実際のサーバー名に読み替えてください)。

-- ① Windows アカウントを「ログイン」として登録(パスワードは SQL 側で持ちません)
USE [master];
GO
CREATE LOGIN [TECHS-SERVER\ff_readonly] FROM WINDOWS
    WITH DEFAULT_DATABASE = [TECHS6];
GO

-- ② TECHS6 で「読むだけ」の権限
USE [TECHS6];
GO
CREATE USER [TECHS-SERVER\ff_readonly] FOR LOGIN [TECHS-SERVER\ff_readonly];
GO
ALTER ROLE [db_datareader] ADD MEMBER [TECHS-SERVER\ff_readonly];
GO

-- ③ 念のため書き込みを明示的に禁止
DENY INSERT, UPDATE, DELETE TO [TECHS-SERVER\ff_readonly];
GO

手順3. 同期は「誰もログオンしていない状態」でも動く必要があるため、 このアカウントにバッチジョブとしてのログオンを許可します。

ローカルセキュリティポリシー secpol.msc → ローカルポリシー → ユーザー権利の割り当て → 「バッチ ジョブとしてログオン」ff_readonly を追加。
これが無いと、タスクスケジューラに登録しても実行時に失敗します。
この方法の利点

これは何をする作業ですか

新しいシステムが TECHS のデータ(品番・部品表・在庫・発注など)を毎晩自動で読み取るために、TECHS のデータベースに「見るだけの利用者」を1人つくります。

TECHS サーバー SQL Server TECHS6 読み取り専用 ログイン 今回つくるもの 新しい生産管理 システム 毎晩 自動で受け取り 読む 送る 書き込みは一切できません
図1:今回つくるのは「読むだけ」の利用者です(イメージ図)
安心してください

全体の流れ

最初に事前確認を行います。ここで「そのまま進められる」か「別紙の設定が先に必要」かが分かります。多くの場合はそのまま進められます。

手順4 事前確認 結果が「○」だけ → そのまま手順5へ(多くはこちら) 「△」がある → 別紙の設定を先に依頼 手順5〜8 ログイン作成・接続テスト・連絡 別紙が終わってから 手順5に戻る
図2:事前確認の結果で、その後の進め方が決まります(イメージ図)

ご用意いただくもの

ご自身で判断できない場合 この作業は SQL Server の設定にあたります。社内に情報システム担当の方や、TECHS の保守をお願いしている業者さんがいる場合は、この手順書をそのままお渡しください。SQL を1回実行するだけの作業です。

1サーバーの名前を調べる

まず、TECHS がどのサーバーに繋がっているかを確認します。TECHS がインストールされているフォルダの中にある、EUCConnection.ini というファイルを開きます。

ファイルを右クリック → プログラムから開く → メモ帳 を選んでください。次のような、4行だけの短いファイルです。

EUCConnection.ini — メモ帳 [DB_INFO] SERVER=TECHS-SERVER DATABASE=EUCTOOL VERSION=3 この行の「=」の右側を メモしてください
図3:SERVER= の右側がサーバー名です(イメージ図)

SERVER= の右側の文字列がサーバー名です。上の例では TECHS-SERVER ですが、お客様の環境では違う名前になっています。そのままの文字で正確にメモしてください。

\(円記号/バックスラッシュ)が入っている場合 SERVER=SV01\TECHS のように \ が入っていることがあります。これは「名前付きインスタンス」といって、1台のサーバーに複数の SQL Server が入っている構成です。その場合も、記号を含めてそのまま全部メモしてください。省略すると繋がりません。
,(カンマ)の後ろに数字がある場合(例 SV01,1433)は、その数字がポート番号です。これもメモしてください。
ファイルが見つからないとき Windows のエクスプローラーで C:\ を開き、右上の検索欄に EUCConnection.ini と入力して探してください。見つからなくても、手順4の事前確認で正式なサーバー名が分かりますので、そのまま次へ進んでください。

2SQL Server Management Studio を開く

データベースの設定をする道具です。SSMS(エスエスエムエス)と略します。

Windows のスタートボタンを押し、SQL Server Management Studio と入力してください。出てきたら、それをクリックして起動します。

見つからない・入っていない場合 マイクロソフト社の公式ページから無料で入手できます。ブラウザで SSMS ダウンロード と検索し、Microsoft の公式サイト(learn.microsoft.com)からダウンロードしてください。インストールは「次へ」を押していくだけですが、環境によっては15分ほどかかります(冒頭の所要時間はこれを含みません)。
インストールに不安がある場合は、この手順書ごと保守業者さんにお渡しください。

3管理者としてサーバーに接続する

SSMS を起動すると、接続画面が出ます。次のように入力してください。

サーバーへの接続 サーバーの種類 データベース エンジン サーバー名 TECHS-SERVER ↑ 手順1でメモした名前 認証 Windows 認証 接続 キャンセル
図4:接続画面。サーバー名だけ入力して「接続」を押します(イメージ図)
項目入れるもの
サーバーの種類データベース エンジン(最初からこうなっています)
サーバー名手順1でメモした名前。分からなければ .(ピリオド1文字)または localhost
認証Windows 認証」のまま
暗号化欄がある場合は〔サーバー証明書を信頼する〕にチェックを入れてください
新しい SSMS をお使いの場合 接続画面に「暗号化」という欄があり、既定で「必須」になっています。そのままだと 「証明書チェーンは信頼されていない機関で発行されました」というエラーで接続できません。 すぐ下の〔サーバー証明書を信頼する〕にチェックを入れてから〔接続〕を押してください。
手順2で入手した SSMS は新しいバージョンのため、ほぼ確実にこの操作が必要です。

「接続」を押して、左側にフォルダの一覧が出れば成功です。

4事前確認(このサーバーの状態を調べる)

上のメニューの「新しいクエリ」ボタンを押すと、文字を入力できる白い画面が開きます。そこに下の内容を貼り付けて、「実行」(または F5 キー)を押してください。

この手順は「調べるだけ」です 設定を変更しません。何度実行しても安全です。
-- 【事前確認】設定は変更しません。調べるだけです。

-- ① 認証モード
SELECT CASE SERVERPROPERTY('IsIntegratedSecurityOnly')
         WHEN 1 THEN N'△ Windows認証のみ → 別紙の設定が必要'
         ELSE N'○ 混在モード → このまま進めます' END AS [1_認証モード];
GO

-- ② TCP/IP とポート番号
--    ループバック(127.0.0.1 / ::1)を除外しています。TCP/IP を無効にしても
--    管理用接続(DAC)がループバックの1434で待ち受けたままになるため、
--    除外しないと「TCP有効・ポート1434」と誤って表示されます。
SELECT CASE WHEN EXISTS (SELECT 1 FROM sys.dm_tcp_listener_states
                          WHERE type_desc = 'TSQL' AND state_desc = 'ONLINE'
                            AND ip_address NOT IN ('127.0.0.1', '::1'))
         THEN N'○ 有効' ELSE N'△ 無効 → 別紙の設定が必要' END AS [2_TCP接続],
       (SELECT TOP 1 CAST(port AS nvarchar(10))
          FROM sys.dm_tcp_listener_states
         WHERE type_desc = 'TSQL' AND state_desc = 'ONLINE'
           AND ip_address NOT IN ('127.0.0.1', '::1')
         ORDER BY is_ipv4 DESC) AS [3_ポート番号];
GO

-- ③ ポート番号が固定か自動か
--    「自動」の場合、サーバーを再起動するたびに番号が変わります。今は
--    つながっても、次にサーバーを再起動した日に夜間同期が止まります。
DECLARE @dyn nvarchar(50), @static nvarchar(50);
EXEC master.dbo.xp_instance_regread N'HKEY_LOCAL_MACHINE',
     N'Software\Microsoft\MSSQLServer\MSSQLServer\SuperSocketNetLib\Tcp\IPAll',
     N'TcpDynamicPorts', @dyn OUTPUT;
EXEC master.dbo.xp_instance_regread N'HKEY_LOCAL_MACHINE',
     N'Software\Microsoft\MSSQLServer\MSSQLServer\SuperSocketNetLib\Tcp\IPAll',
     N'TcpPort', @static OUTPUT;
SELECT CASE WHEN ISNULL(@static, '') <> '' THEN N'○ 固定'
            WHEN ISNULL(@dyn, '')    <> '' THEN N'△ 自動(再起動で変わる)→ 別紙の設定が必要'
            ELSE N'- 判定できませんでした' END AS [4_ポート種別];
GO

-- ④ サーバーの情報
SELECT @@SERVERNAME                                        AS [5_サーバー名],
       ISNULL(CAST(SERVERPROPERTY('InstanceName') AS nvarchar(128)),
              N'(既定のインスタンス)')                    AS [6_インスタンス名],
       CAST(SERVERPROPERTY('ProductVersion') AS nvarchar(32)) AS [7_バージョン];
GO

-- ⑤ データベースの一覧(TECHS6 があるか確認)
SELECT name AS [8_データベース名]
  FROM sys.databases
 WHERE database_id > 4
 ORDER BY name;
GO

結果の読み方

5つの表が縦に並んで表示されます。①②③に「△」が1つでもあるかを見てください。

結果次にすること
①②③とも「○」 そのまま手順5へ進んでください。多くの場合はこちらです。
「△」がある 先にサーバー側のネットワーク設定が必要です。この手順書はここで一旦中断し、別紙 「SQL Server ネットワーク設定(保守業者さま向け)」 を情報システム担当者または保守業者さんにお渡しください。
その作業が終わってから、手順5に戻ってください。
なぜ別紙なのか 「△」を直す作業は SQL Server の再起動を伴い、TECHS が数分間止まります。業務時間中に行うと全員が TECHS を使えなくなるため、実施時間を決められる方にお願いする必要があります。この手順書の作業(手順5以降)は TECHS を止めません。
⑤の一覧に TECHS6 がない場合 データベース名が違う環境です。一覧に出ている名前(TECHS_○○ のような形のことがあります)を控えてください。手順5でその名前に読み替えます。

5読み取り専用ログインをつくる

5-1. まずパスワードを決める

この利用者専用のパスワードを決めてください。次の条件を満たす必要があります。

下の例をそのまま使わないでください 例:Tk9#mQx2Lp7v のような、意味のない文字の並びにしてください。この例文をそのまま使うと、誰でも入れてしまいます。

5-2. 下の内容をコピーして貼り付ける

-- ① サーバーに「ログイン」を作る
USE [master];
GO
CREATE LOGIN [ff_readonly]
    WITH PASSWORD = N'ここに決めたパスワードを入れる',
         DEFAULT_DATABASE = [TECHS6],
         CHECK_EXPIRATION = OFF,
         CHECK_POLICY = ON;
GO

-- ② TECHS6 で「読むだけ」の権限を与える
USE [TECHS6];
GO
CREATE USER [ff_readonly] FOR LOGIN [ff_readonly];
GO
ALTER ROLE [db_datareader] ADD MEMBER [ff_readonly];
GO

-- ③ 念のため、書き込みを明示的に禁止する
DENY INSERT, UPDATE, DELETE TO [ff_readonly];
GO

貼り付けたら、ここに決めたパスワードを入れる の部分(前後の ' は残す)を、5-1で決めたパスワードに書き換えます。

手順4の⑤で TECHS6 以外の名前だった場合は、上の TECHS6すべてその名前に書き換えてください。

そして「実行」ボタン(または F5 キー)を押します。

成功したときの表示 画面の下に「コマンドは正常に完了しました。」と出れば成功です。赤い文字が出た場合は、このページの最後「うまくいかないとき」をご覧ください。

6できているか確認する(サーバー側)

もう一度「新しいクエリ」を開き、次を貼り付けて実行してください。

USE [TECHS6];
SELECT r.name AS [権限], m.name AS [利用者]
FROM sys.database_role_members rm
JOIN sys.database_principals r ON rm.role_principal_id = r.principal_id
JOIN sys.database_principals m ON rm.member_principal_id = m.principal_id
WHERE m.name = 'ff_readonly';

次のように1行だけ表示されれば、正しくできています。

権限利用者
db_datareaderff_readonly

何も表示されない(0行)の場合は、手順5がうまくいっていません。もう一度手順5からやり直してください。

7接続テスト(同期するパソコンから)

この手順を飛ばさないでください 手順6はサーバーの中から見た確認です。実際にデータを受け取るのは別のパソコンなので、そこから繋がるかどうかは、そのパソコンで試さないと分かりません。ここを飛ばすと「作業は終わったのに、後日つながらない」ということが起こります。

新システムの同期プログラムを動かすパソコンに移動してください(サーバーとは別の機械です)。

スタートボタンを押し、PowerShell と入力して Windows PowerShell を起動します。次の内容を貼り付けて Enter を押してください。

# 下の3つを、手順4の結果の値に書き換えてください
$server   = "TECHS-SERVER"
$port     = "1433"
$database = "TECHS6"

$pw = Read-Host "ff_readonly のパスワードを入力" -AsSecureString
$plain = [Runtime.InteropServices.Marshal]::PtrToStringAuto(
           [Runtime.InteropServices.Marshal]::SecureStringToBSTR($pw))
# tcp: を付けるのが重要です。付けないと、サーバー機の上で実行したときに
# ネットワークを使わない接続(共有メモリ)になり、TCP が無効でも「成功」して
# しまいます。テストの意味がなくなります。
$cs = "Data Source=tcp:$server,$port;Initial Catalog=$database;User ID=ff_readonly;" +
      "Password=$plain;Encrypt=True;TrustServerCertificate=True;Connect Timeout=10"
try {
  $conn = New-Object System.Data.SqlClient.SqlConnection $cs
  $conn.Open()
  $cmd = $conn.CreateCommand()
  $cmd.CommandText = "SELECT COUNT(*) FROM sys.tables"
  Write-Host "○ 成功しました。読み取れたテーブル数:" $cmd.ExecuteScalar() -ForegroundColor Green
  $conn.Close()
} catch {
  Write-Host "× 失敗しました:" $_.Exception.Message -ForegroundColor Red
}

パスワードの入力を求められます。入力しても画面には何も表示されませんが、正しく入力されています。そのまま Enter を押してください。

成功したときの表示 ○ 成功しました。読み取れたテーブル数: 123 のように緑色で出れば完了です(数字は環境によって違います)。ここまで来れば作業は終わりです。
「× 失敗しました」と出た場合 表示されたメッセージをそのまま控えてご連絡ください。ページ下の「うまくいかないとき」に主な原因を載せています。多くはサーバー側のネットワーク設定(別紙)が必要なケースです。

8連絡していただく内容

作業が終わったら、次の内容をご連絡ください。印刷して書き込んでいただいても構いません。

パスワードの送り方について サーバー名とパスワードを同じメールに書くと、そのメール1通が漏れただけで誰でも接続できてしまいます。パスワードだけは電話や SMS など別の手段でお願いします。お手数ですが、ここだけは徹底してください。

9取り消したいとき

作った利用者を消したくなったら、いつでも次を実行してください。元通りになります。TECHS のデータには影響しません。

USE [TECHS6];
GO
DROP USER [ff_readonly];
GO
USE [master];
GO
DROP LOGIN [ff_readonly];
GO

うまくいかないとき

出たメッセージ意味と対処
サーバーへの接続を確立できませんでした(手順3) サーバー名が違うか、サーバーが起動していません。同じサーバー機の上で作業しているなら .localhost を試してください。
パスワードが複雑性の要件を満たしていません パスワードが簡単すぎます。12文字以上で、大文字・小文字・数字・記号を混ぜたものに変えて、もう一度実行してください。
'ff_readonly' は既に存在します すでに作成済みです。手順6の確認を実行して1行表示されれば完了しています。作り直す場合は手順9で消してから、もう一度手順5を実行してください。
CREATE LOGIN 権限がありません
/ このアクションを実行する権限がありません
今ログインしている Windows ユーザーに管理者権限がありません。サーバーの管理者アカウントでログインし直すか、保守業者さんにご依頼ください。
データベース 'TECHS6' が存在しません データベース名が違います。手順4の⑤の一覧で正しい名前を確認し、読み替えてください。
手順7で「ユーザー 'ff_readonly' はログインできませんでした」 サーバーが Windows 認証のみの設定です。手順4の①が「△」だったはずです。別紙 「SQL Server ネットワーク設定」の作業が必要です。
手順7で A network-related or instance-specific error…
(provider: TCP Provider, error: 0 …)
※このメッセージは英語で出ます(サーバーではなく接続部品が出すため)
TCP/IP が無効か、ファイアウォールで塞がれています。手順4の②が「△」だったはずです。別紙 「SQL Server ネットワーク設定」の作業が必要です。
「証明書チェーンは、信頼されていない機関で発行されました」 手順3で出た場合:接続画面の〔サーバー証明書を信頼する〕にチェックを入れて、もう一度〔接続〕を押してください。
手順7で出た場合:貼り付けた内容の TrustServerCertificate=True が消えている可能性があります。もう一度コピーし直してください。

よくあるご質問

TECHS の動作が遅くなりませんか?

読み取りは深夜2時ごろに1回だけ行います。日中の業務時間には動きません。

TECHS のデータが書き換わることはありませんか?

ありません。今回つくる利用者は「読むだけ」の権限しか持っておらず、手順5の③で書き込みを明示的に禁止もしています。仕組みとして書き込めません。

作業中に TECHS が止まりませんか?

この手順書の作業では止まりません。サーバーの再起動も行いません。もし手順4で「△」が出た場合のみ、別紙の作業で一時的な停止が発生しますが、それは実施日時を相談してから行います。

今使っている TECHS の利用者に影響しますか?

影響しません。既存の利用者の設定は一切変更していません。

この設定はどれくらい必要ですか?

新システムへの移行が完了するまでの間です。不要になったら手順9で削除してください。