日期:2014-05-18  浏览次数:20942 次

存在文件共享冲突。其他进程可能正在使用该文件
我用C#编写PC程序,PC程序要开打SQLCE数据库
当SQLCE数据库文件放在本地硬盘,
使用连接字串
connectionString = @"Data Source=I:\mobile\mobile.sdf;Password=aaa...111;Max Database Size = 2048;File Mode = 'shared read'";
提示"存在文件共享冲突。其他进程可能正在使用该文件"
而使用以下连接字串
connectionString = @"Data Source=I:\mobile\mobile.sdf;Password=aaa...111;Max Database Size = 2048;
就成功

当SQLCE数据库文件放在网络上面共享盘(非本地共享出去)时
使用连接字串
connectionString = @"Data Source=I:\mobile\mobile.sdf;Password=aaa...111;Max Database Size = 2048;File Mode = 'shared read'";
连接成功
而使用以下连接字串
connectionString = @"Data Source=I:\mobile\mobile.sdf;Password=aaa...111;Max Database Size = 2048;
反而提示"存在文件共享冲突。其他进程可能正在使用该文件"

请问谁有connectionString 完整的参数与说明,谢谢


------解决方案--------------------
标准连接
Data Source=MyData.sdf;Persist Security Info=False;
如果您正在使用SQL Server 2005 Express,在指库服务器名的时候,使用服务器名\实例名 作为数据源,来连接一个指定的SQL Server实例。
 
指定本地SDF文件的方法
通常情况下.SDF数据库并不运行在程序目录下,所以需要指定.SDF文件的路径。在这个例子里(.net C#)展示了当.SDF与应用程序在同一个文件夹时的一种处理方法。
Data Source=" + (System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase) + "\\MyData.sdf;Persist Security Info=False;
 
指定数据库最大容量
默认最大容量为128M,可以通过下面的语法定义我们需要的容量。
Data Source=MyData.sdf;Max Database Size=256;Persist Security Info=False;
 
 
指定最大缓存容量
在服务器向磁盘中写入缓存之前,默认的可用最大内存缓存容量为640K,可以通过下面的语法定义我们需要的容量。
Data Source=MyData.sdf;Max Buffer Size=1024;Persist Security Info=False;
 
开启数据库加密
用这种语法格式开启数据库加密
Data Source=MyData.sdf;Encrypt Database=True;Password=myPassword;File Mode=shared read;Persist Security Info=False;
 
独占访问
使用这种语法,当你打开数据库的时候,其他进程无法访问或修改数据库。
Data Source=MyData.sdf;File Mode=Exclusive;Persist Security Info=False;
 
 
只读访问
使用这种语法,可以打开一个只读的数据库副本。
Data Source=MyData.sdf;File Mode=Read Only;Persist Security Info=False;
 
独占可读访问
用这种语法,可以确保当你打开数据库的时候,其他进程可以读取数据库,但无法修改。
Data Source=MyData.sdf;File Mode=Shared Read;Persist Security Info=False;
 
指定临时文件的最大容量
默认最大容量为128M,可以通过下面的语法定义我们需要的容量。
Data Source=MyData.sdf;Temp File Max Size=256;Persist Security Info=False;