做動作時,都會讀取電腦的 SID(Security Identifie)
當唯一值,如果有SID衝到,就有很大的機會會發生奇怪的問題。
例如,兩台電腦一直在搶登入的帳號,或是虛擬機器碼重複…
今天碰到的問題,
要在不同的server取資料出來做比對。
來達成我未來的懶人生活。
才發現不知道怎麼下in的條件丟去dapper裡面。
正常的寫法為
using (var cn = new SqlConnection(mst_fatekConnStr))
{
string strSql = string.Format(@"select a,b,c from item where add_dt >=@add_dt");
var list = cn.Query<ItemModels>(strSql,new { add_dt = add_dt});
}
在來如果要把上面的欄位 a 拉出來當作子查詢的參數,想要的sql是這樣
select * from item where a in ( select a from item where add_dt >= @add_dt)
現在要用dapper解決 in帶參數的問題
最簡單的應該是 用foreach 把每一個欄位的值拉出來,前後加上 單引號 以及 逗點 串成字串,
另外一種
var items_no = list.Select(p=>p.a).ToList<string>();
string strSql2 = string.Format(@"select a,b,c from item where add_dt >=@add_dt and a not in @items_no");
var list2 = cn2.Query<ItemModels>(strSql2, new { add_dt = add_dt,items_no = items_no });
雖然跟上面用foreach的方式差不多,但這個只要一行就解決,
不用在用foreach串字串了。
int startRowNumber = sheet1.Dimension.Start.Row;//起始列編號,從1算起
int endRowNumber = sheet1.Dimension.End.Row;//結束列編號,從1算起
int startColumn = sheet1.Dimension.Start.Column;//開始欄編號,從1算起
int endColumn = sheet1.Dimension.End.Column;//結束欄編號,從1算起
sheet1.Cells[endRowNumber + 1, 8].Formula = "SUM(H2:H" + endRowNumber + ")";說來奇怪,
寄信的sql(使用Database Mail),
exec msdb.dbo.sp_send_dbmail ….
用『維護計畫』、SQL Serve Agent 跑都正常沒錯誤,
但只要丟去SQL裡面執行就直接跳
『無法初始化 sqlcmd 程式庫 ,錯誤號碼為 -2147467259。』
用中文google會發現,找不到問題!!
所以請用英文
從權限的設定到mail設定檔的檢查都正常。
記得執行Sql server agent 的帳號權限要到 SSMS
設定使用者帳號的屬性->伺服器角色 權限要到 sysadmin
最後發現,問題出在@query有問題
本來的@query是
@query='USE mst_fatek ; SELECT …..
FROM RQTDL ‘
會一直出問題,
之後把 SQL改成
@query = ‘select ….. from mst_fatek.dbo.rqtdl’
就過了…….WTF
所以基本上這個錯誤訊息,就是SQL有誤!!!跟權限沒關係
伺服器上面裝了,SQL Server 2016,
但不知道為何,SSMS沒有裝。
所以就去網路上抓了17.2 ,此時連線資料庫都正常。
但偏偏只有 連線 Integration Services 失敗,
只要一連線就是跳下面的訊息出來
其他資訊:
無法擷取此要求的資料。 (Microsoft.SqlServer.Management.Sdk.Sfc)
如需說明,請按一下: http://go.microsoft.com/fwlink?ProdName=Microsoft%20SQL%20Server&LinkId=20476
------------------------------
連接到電腦 "SQLSERVER4" 上的 Integration Services 服務失敗,錯誤如下: "指定的服務並不是已安裝的服務。"。
當您嘗試從目前版本的 SQL Server 工具連接到 SQL Server 2005 Integration Services 服務時,就可能發生這種錯誤。請改為在服務組態檔中加入資料夾,讓本機 Integration Services 服務來管理 SQL Server 2005 執行個體上的封裝。
如需說明,請按一下: http://go.microsoft.com/fwlink/?LinkId=506689
跟同事試了老半天,最後發現 這篇
抱著姑且一試的心情,改去抓16.5.3 的SSMS,
移除舊的SSMS 17.2,再安裝16.5.3,
WTF ,連線到SSIS正常了。