我有一个SQL Server表,其中包含大约50,000行.我想随机选择大约5,000行.我想到了一个复杂的方法,创建一个带有"随机数"列的临时表,将我的表复制到其中,循环遍历临时表并用每个行更新RAND(),然后从该表中选择随机数列< 0.1.我正在寻找一种更简单的方法,如果可能的话,在一个声明中.
本文建议使用该NEWID()功能.这看起来很有希望,但我看不出如何可靠地选择一定比例的行.
有人曾经这样做过吗?有任何想法吗?
我一直都在使用log4net,但有一点我从未弄清楚的是如何判断内部发生了什么.例如,我的项目中有一个控制台appender和一个数据库appender.我对数据库和代码做了一些更改,现在数据库appender不再起作用了.我会弄清楚为什么最终,但如果我能看到log4net里面发生了什么,那将会有很大帮助.
log4net是否生成任何类型的输出,我可以查看以尝试确定问题的根源?
我已经看到至少一个可靠的源(我采用的C++类)建议C++中特定于应用程序的异常类应该继承std::exception.我不清楚这种方法的好处.
在C#中,继承的原因ApplicationException很明确:你得到了一些有用的方法,属性和构造函数,只需要添加或覆盖你需要的东西.有了std::exception这一切似乎你得到的是一个what()覆盖方法,你也可以同样创造自己.
那么,如果有的话,std::exception作为特定于应用程序的异常类的基类有什么好处呢?有没有好的理由不继承std::exception?
这是一个坏主意,我知道,但是...我想从头开始以编程方式配置log4net,没有配置文件.我正在为我和我的团队开发一个简单的日志记录应用程序,用于我们负责的一些相对较小的部门应用程序.我希望他们都登录到同一个数据库.日志记录应用程序只是log4net的一个包装器,预先配置了AdoNetAppender.
所有应用程序都是ClickOnce部署的,这对部署配置文件提出了一个小问题.如果配置文件是核心项目的一部分,我可以设置其属性以使用程序集进行部署.但它是链接应用程序的一部分,因此我无法选择将其与主应用程序一起部署.(如果那不是真的,请有人告诉我).
可能因为它是一个坏主意,似乎没有太多的示例代码可用于从头开始以编程方式配置log4net.这是我到目前为止所拥有的.
Dim apndr As New AdoNetAppender()
apndr.CommandText = "INSERT INTO LOG_ENTRY (LOG_DTM, LOG_LEVEL, LOGGER, MESSAGE, PROGRAM, USER_ID, MACHINE, EXCEPTION) VALUES (@log_date, @log_level, @logger, @message, @program, @user, @machine, @exception)"
apndr.ConnectionString = connectionString
apndr.ConnectionType = "System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
apndr.CommandType = CommandType.Text
Dim logDate As New AdoNetAppenderParameter()
logDate.ParameterName = "@log_date"
logDate.DbType = DbType.DateTime
logDate.Layout = New RawTimeStampLayout()
apndr.AddParameter(logDate)
Dim logLevel As New AdoNetAppenderParameter()
logLevel.ParameterName = "@log_level"
'And so forth...
Run Code Online (Sandbox Code Playgroud)
配置完所有参数后apndr,我首先尝试了这个...
Dim hier As Hierarchy = DirectCast(LogManager.GetRepository(), Hierarchy) …Run Code Online (Sandbox Code Playgroud) 我刚刚开始我的第一个C++项目.我正在使用Visual Studio 2008.它是一个单一窗体的Windows应用程序,可以访问几个数据库并启动WebSphere MQ事务.我基本上理解ATL,MFC,Win32(实际上我对它有点模糊)和CLR之间的差异,但我对如何选择感到茫然.
这些中的一个或多个是为了向后兼容吗?
CLR 是个坏主意吗?
任何建议赞赏.
编辑: 我为这个项目选择了C++,原因是我没有在帖子中介绍,这些并不完全是技术性的.所以,假设 C++是唯一/最佳选择,我应该选择哪个?
我正在开发一个Windows批处理文件,它将三个文本文件bcp到SQL Server中.如果在生产中出现问题,我希望能够覆盖文件名.所以我想做这样的事情.
bcp.exe MyDB..MyTable1 in %1 -SMyServer -T -c -m0
bcp.exe MyDB..MyTable2 in %2 -SMyServer -T -c -m0
bcp.exe MyDB..MyTable3 in %3 -SMyServer -T -c -m0
Run Code Online (Sandbox Code Playgroud)
我希望能够为所有三个文件输入默认名称,如果未提供位置参数,则使用该名称.这个想法要么是要执行
myjob.bat
Run Code Online (Sandbox Code Playgroud)
没有参数,并使用默认值或执行
myjob.bat "c:\myfile1" "c:\myfile2" "c:\myfile3"
Run Code Online (Sandbox Code Playgroud)
并让它使用这些文件.我无法弄清楚如何判断%1,%2和%3是否存在和/或是否为空.我也不知道如何有条件地设置这些值.这可能吗?任何建议,将不胜感激.
我想将一些SQL Server 2005数据导出为CSV格式(用逗号分隔引号).我可以想到很多复杂的方法,但我想以正确的方式做到这一点.我看过bcp,但我无法弄清楚如何在字段周围添加引号(除了将它们连接到字段值,这很难看).我想我可以用sqlcmd和-o做到这一点,但出于同样的原因,这似乎很难看.
有没有bcp方式来做到这一点?
有合理的sqlcmd方法吗?
管理工作室内置了一些非常简单的实用工具吗?
我是C++的新手,而且我完全没有得到的东西.在C#中,如果我想使用外部库,例如log4net,我只需添加对log4net DLL的引用,它的成员就可以自动使用(以及IntelliSense中).如何在非托管C++中执行此操作?
我即将开始我的第一个C++项目.在过去10年左右的时间里,我已经完成了很多C#和VB(VB6和VB.NET),以及Java和其他一些事情,直到现在才对C++有过要求.
我计划使用Visual Studio 2008,但我很想从经验丰富的C++程序员那里了解Visual Studio是否适合C++新手使用.
VS会以任何方式让我更难学会正确编程C++吗?
VS会鼓励任何坏习惯吗?
我应该留意哪些陷阱?
我试图做这个问题的反面,用Windows行结尾替换Unix行结尾,这样我就可以使用SQL Server bcp over samba来导入文件.我sed安装但没有dos2unix.我试图扭转这些例子但无济于事.
这是我正在使用的命令.
sed -e 's/\n/\r\n/g' myfile
Run Code Online (Sandbox Code Playgroud)
我执行了这个然后跑了od -c myfile,期待看到\r\n以前的位置\n.但是一切都还在\n.(或者至少他们看起来是.od的输出溢出了我的屏幕缓冲区,所以我没有看到文件的开头).
我无法弄清楚我做错了什么.有什么建议?