iT邦幫忙

0

[已解決]關於SQL Server,如何從已知的值,反找出欄位名稱及所在資料表?

sql

請問已知網頁表單有多個值,要怎麼利用來反找欄位跟資料表
DB名稱可能是EFNETDB or HRMDB
https://ithelp.ithome.com.tw/upload/images/20180301/20094721gh0ay1Xst6.png
謝謝
這是鼎新EFNET調刷卡資料,因為同一個打卡時間會有30筆重複記錄
問鼎新說應是Soyal考勤那邊問題,但從Soyal看又很正常
(或可能Soyal報表會自行排除重複記錄)
故想說有空時自己新增表單來查找好了

2 個回答

2
暐翰
iT邦大師 9 級 ‧ 2018-03-01 12:21:41
最佳解答

可以參考我寫的小程式
小程式-Oracle&C#全表格查詢搜尋單一值
版本是oracle
但sql server把oracle查all_tab_colums那邊語法換成以下

select 
    TABLE_NAME as TABLE_NAME
    ,ORDINAL_POSITION as COLUMN_ID
    ,column_name 
    ,data_type as data_type
from INFORMATION_SCHEMA.COLUMNS with (nolock)

就可以

原理:

查詢usertableview組合查詢sql
然後搜尋全部表格中符合值的欄位
找到值 -> 找到對應欄位 -> 找到對應表格

PS:
假如要多值查詢的需要,可以在查詢使用or組合sql
我有做一個sql server版本
但還沒有寫教學
有需要我晚上假如有空在寫

vicentli iT邦新手 3 級 ‧ 2018-03-01 13:34:18 檢舉

感謝,順便問一下SQL Server有無追蹤/日誌工具,可以查外部程式對SQL下了哪些語法來查找資料?

暐翰 iT邦大師 9 級 ‧ 2018-03-01 13:41:22 檢舉

可以 使用sql profiler

vicentli iT邦新手 3 級 ‧ 2018-03-01 14:08:13 檢舉

感謝,已找到!

0
做工仔人!
iT邦高手 1 級 ‧ 2018-03-01 14:11:15

樓主基本上是用"工程"的角度去思考問題的解決方案.
提供另一個流程驗證方案供樓主思考:
問題的核心: 同一個打卡時間會有30筆重複記錄
先方解HRM系統的刷卡資料來源的流程:
user 在卡鐘刷卡後, 卡鐘會先比對卡號"允不允許"通過(要不要開門)
允許:卡鐘就會產生一筆記錄,並傳送到後台的server.
一般:人資會定期(如每天上午10:00)去下載卡鐘server 的刷卡資料.(一般是產生文字檔)
下載完成後, 人資會將刷卡資料"匯入" HRM系統.
HRM系統"比對"刷卡資料後,再據HRM中每個員工應不應刷卡及班別上下班時間.將"刷卡異常"的人員透過EF.NET 發送通知給員工.
在這個流程中.要找出:"同一打鐘時間有30筆重複記錄"的問題,有二個地方:
1.HRM的刷卡記錄TABLE 中, 是否有30筆資料?
2.卡鐘SERVER匯出的文字檔中是不是有30筆相同的記錄?
基本上這樣就可以"了解"問題點.

再依問題點去夫解決方案.
卡鐘1筆資料,HRM系統中有30筆資料:那就請鼎新解解及處理.
卡鐘的文字檔就有30筆資料:就請卡鐘的廠商來維修及檢測.

vicentli iT邦新手 3 級 ‧ 2018-03-01 14:53:13 檢舉

感謝您的回覆,先前鼎新是推給考勤,當時我也沒權限查考勤
目前可查出,考勤只有一筆資料
藉由暐翰大回覆協助,找到SQL有多筆資料,
故我提出查詢結果給鼎新,請他們協助排除,非常感謝

我要發表回答

立即登入回答