我们正在尝试将文件从服务器复制到.NET 2.0应用程序(C#)中的本地计算机,但不断锁定源文件.我们怀疑它是在文件服务器上配置的导致此行为的东西,但不确定是什么......你能帮忙吗?
在文件复制操作之后,文件服务器(Windows 2K3 R2)报告源文件是使用读锁保持的,即使服务器上的文件没有进一步操作.应用程序退出后将释放锁定.
我们能够重现这种行为,即使使用下面的最基本代码:
static void Main(string[] args)
{
string sourceFile = @"\\win2K3server\resource\Production\IQE\sourceFolder\iqeconsole.exe";
string destinationFile = @"d:\destinationFolder\iqeconsole.exe";
System.IO.File.Copy(sourceFile,destinationFile,true);
Console.ReadLine();
}
Run Code Online (Sandbox Code Playgroud)
锁定File.Copy()在行执行期间立即发生,并在此行完成后持续存在.在更复杂的应用程序中,当具有File.Copy()退出的例程(但应用程序仍在运行)时,锁定仍然存在.
只有当整个应用程序完成时才会释放锁定.
更改sourceFile为使用映射驱动器而不是UNC路径对行为没有任何影响.
当源文件位于另一台服务器上或位于本地时,不会发生此行为.
如果我们在之后添加以下行 File.Copy,则立即释放锁:
new System.Security.Permissions.FileIOPermission(System.Security.Permissions.FileIOPermissionAccess.Read, new string[] { sourceFile }).Demand();
Run Code Online (Sandbox Code Playgroud)
这听起来好像在服务器上有什么东西导致了这种行为.我们在服务器上安装了ShadowProtect以及McAfee防病毒软件.除此之外,似乎没有其他任何东西安装在Windows Server及其组件之上.
我们也不确定为什么要求对文件的读取权限可以解决问题.
如果你能回答这些问题,我们将非常感激:
这个wiki帖子概述了问题和解决方案.我想发布这个可能有类似问题的其他人,因为我找不到任何具体的解决方案来解决其他问题.
我们最近将SQL Server 2000数据库升级到SQL Server 2005.服务器上的一个数据库是MS Access数据库的后端.MS Access数据库使用传递查询,通过无DSN的ODBC连接到SQL Server.
无DSN连接字符串的示例如下所示:
ODBC; DRIVER=SQL Server;SERVER=servername;APP=Microsoft® Access (Pass Through
Query);DATABASE=databasename;Network=DBMSSOCN;ConnectionTimeout=20;
Trusted_Connection=Yes
Run Code Online (Sandbox Code Playgroud)
升级后,我们发现用户无法运行传递查询,并显示以下错误:
ODBC - 与"SQL Server"的连接失败
这最初似乎是一个权限问题,因为将SQL服务器登录的priveledges提升到sysadmin服务器角色缓解了这个问题(但显然这不是一个很好的解决方案).
从登录sysadmin角色后,我们发现当通过Management Studio连接到SQL Server时,登录可以执行存储过程.MS Access中无法进行相同的登录.这指向了MS Access在尝试执行存储过程时所做的事情 - 而不是权限问题.
我们使用Profiler在服务器上运行了一个跟踪,这显示MS Access试图在存储的proc执行之前执行以下命令:
DBCC TRACEON(208)
Run Code Online (Sandbox Code Playgroud)
在存储过程执行之前,它似乎在此命令失败.对Web的研究表明,DBCC TRACEON(208)相当于使用'SET QUOTED IDENTIFIERS ON'命令,并且在SQL 2005中,运行此DBCC命令的priveledges已被撤销.
经过进一步研究,我们发现对MS Query的引用存在类似的问题,并且连接字符串的APP组件应该从"MS Query"更改为其他内容.
在预感中,我们更改了ODBC连接字符串的APP组件,并且MS Access在存储过程执行之前不再尝试执行DBCC TRACEON(208).
经过进一步测试,我们将问题跟踪到APP组件中包含的"版权"符号:
APP=Microsoft® Access (Pass Through Query)
Run Code Online (Sandbox Code Playgroud)
通过删除版权符号,一切都很好的连接和应用程序工作,就像以前在SQL 2000上所做的那样.
希望这可以帮助其他有类似问题的人.
任何人都可以推荐一个可以用来将VB.NET项目转换为C#的好应用程序,而不必做太多的手工工作吗?
我们已经使用Reflector手动执行小型库,但是一些较大的项目太慢而且复杂,无法手动完成.
我已经更新了我的ggplot2库,我现在遇到一个问题,在调用ggsave后,图形设备不再显示该图.我无法解决这个问题,这意味着我无法根据需要导出图表.请帮忙.
搜索网络已经显示出一些dpi不匹配问题,但设置或更改dpi似乎没有任何效果.在更新ggplot2库之后,似乎已经开始出现此问题.
以下代码重现了该问题:
library(ggplot2);
df <- read.table(textConnection('value,value1
1,1
2,2
3,3 '),header=TRUE,sep=',');
ggplot(df,aes(x=value,y=value1)) + geom_point();
setwd('c:/temp');
ggsave('test.png');
Run Code Online (Sandbox Code Playgroud)
运行后,输出为空白,图形设备不再显示绘图.任何后续图表都不会显示在图形设备上.
运行dev.off()之后,新的图表显示正常,直到再次调用ggsave.
sessionInfo()将R和库的版本报告为:
R version 3.0.0 (2013-04-03)
Platform: i386-w64-mingw32/i386 (32-bit)
locale:
[1] LC_COLLATE=English_New Zealand.1252 LC_CTYPE=English_New Zealand.1252
[3] LC_MONETARY=English_New Zealand.1252 LC_NUMERIC=C
[5] LC_TIME=English_New Zealand.1252
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] plyr_1.8 ggplot2_0.9.3.1 RODBC_1.3-6
loaded via a namespace (and not attached):
[1] colorspace_1.2-2 dichromat_2.0-0 digest_0.6.3 grid_3.0.0 gtable_0.1.2
[6] labeling_0.1 MASS_7.3-26 munsell_0.4 proto_0.3-10 RColorBrewer_1.0-5
[11] reshape2_1.2.2 scales_0.2.3 stringr_0.6.2 …Run Code Online (Sandbox Code Playgroud) 我有一些C#代码(VS2010; fx2),用于执行打印机功能.此代码在Windows XP环境中正常工作.更改为Windows 7,它不再正常工作.
第一个不同的行为是GetPrinterNames()方法现在只返回本地打印机.如您所见,标志也设置为包括NETWORK打印机.我尝试过不同的旗帜,但没有成功.
我应该在Windows 7/64位版本中引用不同的库吗?
打印机助手类,代码如下所示:
internal class Printers
{
...
[DllImport("winspool.drv", SetLastError = true)]
static extern bool EnumPrintersW(Int32 flags, [MarshalAs(UnmanagedType.LPTStr)] string printerName,
Int32 level, IntPtr buffer, Int32 bufferSize, out Int32 requiredBufferSize,
out Int32 numPrintersReturned);
[DllImport("winspool.drv", CharSet = CharSet.Auto, SetLastError = true)]
private static extern bool EnumPrinters(PrinterEnumFlags Flags, string Name, uint Level, IntPtr pPrinterEnum, uint cbBuf, ref uint pcbNeeded, ref uint pcReturned);
...
...
public static string[] GetPrinterNames()
{
List<string> returnVal = new List<string>();
foreach(PRINTER_INFO_2 info in enumPrinters(PrinterEnumFlags.PRINTER_ENUM_LOCAL …Run Code Online (Sandbox Code Playgroud) 在Windows 7上的R v2.14.0 x64中,我在gplots库中使用plotCI函数,并尝试使用以下内容基于数据框内的数据设置每个绘图的颜色:
plotCI(
x = data[1:2,3],
ui = data[1:2,5],
li = data[1:2,4],
col=data[1:2,6],
lty = 1, pch=20, xaxt ="n", xlim = c(1,42), ylim = c(0,100),
gap = 0 )
Run Code Online (Sandbox Code Playgroud)
除了绘制点的颜色(错误地符合错误的系列)之外,绘图正确地发生(但是颜色在系列内是一致的).
我有一个结构数据框(仅前7行):
size qim X1 lower upper color
1 1000 1 100.0000 99.6000 100.0000 blue
2 1000 2 99.8000 99.4000 100.0000 blue
3 1000 3 98.2000 96.6000 99.2000 blue
4 1000 4 62.7000 58.8000 65.7000 blue
5 1000 5 10.4000 9.0000 12.5000 blue
6 1000 6 3.9000 2.9000 4.9000 …Run Code Online (Sandbox Code Playgroud) 我见过人们写下面的查询
SELECT column_name(s)
FROM table_name1
LEFT JOIN table_name2
ON table_name1.column_name=table_name2.column_name
Run Code Online (Sandbox Code Playgroud)
写得像这样
SELECT column_name(s)
FROM table_name1
LEFT JOIN table_name2
ON table_name2.column_name =table_name1.column_name
Run Code Online (Sandbox Code Playgroud)
它实际上有什么不同吗?