我的目標:創建一個程序,該程序可以每天將SharePoint數據庫複製到SQL服務器。它應該從服務器運行,並且應該每天運行。遠程服務器上的OLEDB連接字符串問題
現狀:在SharePoint網站鏈接到ACCDB我OLEDB打開它,程序運行在本地生成的表/列/數據類型和複製數據的ACCESSDB文件類型的本地副本。
問題:當我接受我的解決方案並嘗試將其部署到遠程服務器時,它有一個彈出窗口,要求用戶打開accessDB的代碼段。我需要這個窗口去死。 該過程必須是自動的,所以顯然不需要人工輸入來運行。
我花了好一天的時間試圖讓這個東西消失,程序運行時沒有它。沒有運氣谷歌,StackOverflow,connectionstrings.com,或MSDN和很多其他的隨機網站。
相關代碼:
public void openDataFromAccess(string connectionString, string tableName, string connectionString2)
{
string sqlQuery = "SELECT * from [" + tableName +"]";
try
{
using (DataTable dt = new DataTable())
{
using (OleDbConnection conn = new OleDbConnection(connectionString))
using (OleDbCommand cmd = new OleDbCommand(sqlQuery, conn))
using (OleDbDataAdapter adapter = new OleDbDataAdapter(cmd))
{
cmd.CommandType = CommandType.Text;
cmd.Connection.Open();
adapter.SelectCommand.CommandTimeout = 240;
adapter.Fill(dt);
adapter.Dispose();
}
默認的連接字符串:
string connectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Migration\Sharepoint Access SQL Batch Job\Database2.accdb;Jet OLEDB:Database Password=password";
事情我已經嘗試包括:
User Id=userid;Password=pass
Persist Security Info=False;
Delay Validation=TRUE
Integrated Security=true;
Mode=Read;
和所有其他設置我能找到連接字符串無濟於事。
的彈出有一個保存信息設置,但我寧願它是在程序中,但窗口不保存passwork當我在手動鍵入它,但它不運行。我似乎無法讓它接受硬編碼值? 重新啓動服務器並啓動Credential Manager和註冊表編輯器的服務沒有幫助。
當我嘗試硬編碼用戶發生的各種錯誤,如:
「工作組信息文件丟失或者被其他程序exclusivly打開」
用戶沒有認證或者類似的一些類似的消息(當用戶應該是,我已經嘗試了幾個用戶,並創建新的用戶和管理員等非常非常小心,因爲我認爲是正確的輸入) 我試圖編輯sharepoint管理員,但在我訪問時,當我嘗試編輯它將鏈接到共享點的權限。
沒有JET註冊表我不得不手動安裝AccessDataBaseEngine_x64。在此之前,該程序並未在服務器上運行。
我相當肯定該解決方案將是簡單的,但我迄今爲止嘗試過的方法沒有奏效。
想法?
我可以問,爲什麼不使用內置的SQL Server Management Studio功能與chronjob結合進行夜間備份以將備份導入到另一個sql server實例? – Marco
好問題! 這是我嘗試的第一件事。 -_- SQL Server Management Studio無法識別文件類型accdb,似乎不支持此文件類型。我試圖將其轉換爲.mbd支持,但它引發「無法識別的數據庫格式」也沒有運氣谷歌搜索解決方案= /如果你知道如何解決這個錯誤,請告訴我。 – JPK
爲什麼它必須是.mdb格式?不是標準的.bak備份文件不夠嗎? 附加問題:如果您只是想將Sharepoint數據庫從一臺服務器複製到另一臺服務器,爲什麼不使用鏡像? – Marco