【发布时间】:2014-03-06 13:27:51
【问题描述】:
我的目标:创建一个可以每天将共享点数据库复制到 SQL 服务器的程序。 它应该从服务器运行,并且应该每天运行。
当前状态:sharepoint 网站链接到 accessDB 文件类型 accdb 的本地副本,我用 OleDB 打开它,程序在本地运行,生成表/列/数据类型并复制数据。
问题:当我采用我的解决方案并尝试将其部署到远程服务器时,它会在打开 accessDB 的代码段中弹出一个窗口,询问用户。我需要这个窗口死掉。 该过程必须是自动的,因此它显然不需要人工输入来运行。
我花了一天的大部分时间试图让这个东西消失,让程序在没有它的情况下运行。 google、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;
以及我在连接字符串中可以找到的所有其他设置均无济于事。
弹出窗口有一个保存信息设置,但我希望它在程序中,但是当我手动输入时,窗口不会保存密码,但它会运行。我似乎无法让它接受硬编码的值??? 重新启动服务器并启动凭据管理器和注册表编辑器的服务没有帮助。
当我尝试对用户进行硬编码时,会出现各种错误,例如:
“工作组信息文件丢失或被其他程序独占打开”
用户未经认证或类似的消息(当用户应该是,我已经尝试了几个用户并创建了新用户和管理员等。非常小心地输入它,因为我认为是正确的) 我曾尝试编辑共享点管理员,但在我尝试编辑权限时,它会将我链接到共享点。
没有 JET 注册表,我必须手动安装 AccessDataBaseEngine_x64。该程序在此之前没有在服务器上运行。
我相当确定解决方案会很简单,但到目前为止我尝试过的方法都没有奏效。
想法???
【问题讨论】:
-
请问,为什么不使用内置的 SQL Server Management Studio 功能进行夜间备份并结合 chronjob 将备份导入另一个 sql server 实例?
-
好问题!那是我尝试的第一件事。 -_- SQL Server Management Studio 无法识别文件类型 accdb,并且似乎不支持此文件类型。我尝试将其转换为受支持的 .mbd,但它会抛出“无法识别的数据库格式”,也没有运气在谷歌上搜索解决方案 =/ 如果您知道如何解决此错误,请告诉我。
-
为什么它必须是.mdb格式?标准的 .bak 备份文件还不够吗?附加问题:如果您只想将 Sharepoint 数据库从一台服务器复制到另一台服务器,为什么不使用镜像?
标签: c# sharepoint connection-string oledb