我的目标:创建一个程序,该程序可以每天将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。在此之前,该程序并未在服务器上运行。
我相当肯定该解决方案将是简单的,但我迄今为止尝试过的方法没有奏效。
想法?
2014-03-06
JPK
+0
我可以问,为什么不使用内置的SQL Server Management Studio功能与chronjob结合进行夜间备份以将备份导入到另一个sql server实例? –
+0
好问题! 这是我尝试的第一件事。 -_- SQL Server Management Studio无法识别文件类型accdb,似乎不支持此文件类型。我试图将其转换为.mbd支持,但它引发“无法识别的数据库格式”也没有运气谷歌搜索解决方案= /如果你知道如何解决这个错误,请告诉我。 –
+0
为什么它必须是.mdb格式?不是标准的.bak备份文件不够吗? 附加问题:如果您只是想将Sharepoint数据库从一台服务器复制到另一台服务器,为什么不使用镜像? –