我正在重构一些代码.
现在有很多地方有这样的功能:
string error;
if (a) {
error = f1(a, long, parameter, list);
}
else {
error = f2(the_same, long, parameter, list);
}
Run Code Online (Sandbox Code Playgroud)
在重构f1和f2之前(虽然很大,但做类似的事情),我想重构为:
string error = (a ? f1 : f2)(a, long, parameter, list);
Run Code Online (Sandbox Code Playgroud)
就像在C中一样.(函数签名是相同的)
但是我收到一个错误:
"错误13无法确定条件表达式的类型,因为'方法组'和'方法组'之间没有隐式转换"
这将允许我通过初始重构给出不变行为来识别参数列表是相同的,并且还在单个位置重构调用,确保在这些各种重构期间所有内容都没有因为我将调用接口更改为方法而被破坏.
我错过了一些小的东西,它允许接近这个的语法工作(而不是一大堆额外的委托类型定义等)?
抱歉编辑,但实际上有一个返回值,是的,不幸的是,它是一个字符串.;-(
现在,我正在解决这个问题:
string error = a ? f1(a, long, parameter, list) : f2(a, long, parameter, list);
Run Code Online (Sandbox Code Playgroud)
问题是参数列表确实很长,并且会被重构,我宁愿先将它们合并,并在我更改时处理编译器错误.
我们的工作站不是我们的SQL Server所在域的成员.(他们实际上根本不在某个领域 - 不要问).
当我们使用SSMS或任何东西连接到SQL Server时,我们将RUNAS/NETONLY与DOMAIN\user一起使用.然后我们输入密码并启动程序.(RUNAS/NETONLY不允许您在批处理文件中包含密码).
所以我有一个需要SQL连接的.NET WinForms应用程序,用户必须通过运行具有RUNAS/NETONLY命令行的批处理文件启动它,然后启动EXE.
如果用户意外直接启动EXE,则无法连接到SQL Server.
右键单击应用程序并使用"运行方式..."选项不起作用(可能是因为工作站并不真正了解域).
我正在寻找一种方法让应用程序在内部启动之前执行RUNAS/NETONLY功能.
有关RUNAS/NETONLY如何工作的说明,请参阅此链接:http://www.eggheadcafe.com/conversation.aspx?smessidid = 32443204&threadid = 32442982
我想我将不得不使用LOGON_NETCREDENTIALS_ONLY
与CreateProcessWithLogonW
我正在尝试从客户端完成一个相当困难的报告请求,我需要找到它以在几分钟内获得两个DateTime列之间的差异.我试图使用各种格式的截断和圆形,似乎无法想出一个有意义的组合.有一种优雅的方式来做到这一点?如果没有,有没有办法做到这一点?
如果我有以下nvarchar变量 - BTA200,我怎样才能从中提取BTA?
另外,如果我有不同的长度,如BTA50,BTA030,我怎样才能提取数字部分?
我安装了带有高级服务的SQL Server 2008 Express,但是当我尝试创建一个新数据库时,选项全文索引是灰色的,我相信已经安装了全文索引,因为我做了如下查询:
use [mydbname]
select fulltextserviceproperty('isfulltextinstalled')
Run Code Online (Sandbox Code Playgroud)
此查询返回1,因此我认为它已成功安装.
我已安装的MSSQL Express和高级服务版支持全文索引.参考页面:http:
//www.microsoft.com/downloads/details.aspx?familyy = B5D1B8C3-FDA5-4508-B0D0-1311D670E336&displaylang = en
任何人都有一个很好的决策树来决定何时使用视图以及何时在SQL Server中使用表值函数?
我不确定最好的方法是什么,所以我将描述最终目标是什么,如果计算列是答案,那么请帮助我走这条路,或者更好的路线.
我有两张桌子:
命令
OrderId
PackageId
MediaSpend
TotalAdViews (Computed column)
Run Code Online (Sandbox Code Playgroud)
包
PackageId
BaseAdViews
Run Code Online (Sandbox Code Playgroud)
每个订单都分配了一个包含1000个视图的包,然后您可以购买更多的媒体支出以获得更多视图.我想创建一个名为TotalAdViews的列,它将添加BaseAdViews + MediaSpend.根据我的理解,如果启用持久性,则列不需要在每次查询时重新计算,这可能有助于提高性能.
如何从计算列中的另一个表中获取值?或者请建议另一种方法来实现我的目标.
我处于这样一种情况,我将为数据库生成一个脚本,我可以在另一台服务器上运行并获得与原始数据库相同的数据库,但没有任何数据.实质上,我希望最终得到一个捕获数据库模式的大型创建脚本.
我在安装了SQL Server 2000的环境中工作,我无法安装2005客户端工具(如果他们有帮助).我负担不起RedGate,但我真的希望在另一台服务器上拥有一个具有相同架构的数据库.
有什么建议?任何简单的.exe(无需安装)工具,技巧或T-SQL技巧都将非常受欢迎.
更新:我正在使用的数据库有200多个表和几个外键关系和约束,因此手动编写每个表并将脚本粘贴在一起并不是一个可行的选择.我正在寻找比这个手动解决方案更好的东西
其他更新除非我完全遗漏了某些内容,否则这不是使用SQL 2000工具的可行解决方案.当我选择在数据库上生成创建脚本的选项时.我最终得到一个包含CREATE DATABASE命令的脚本,并且没有创建任何对象 - 表,约束等.SQL 2005的Management Studio也可以处理这些对象,但数据库处于没有对象的环境中我可以将Management Studio的安装连接到它.
有人可以解释DBCC DROPCLEANBUFFERS
与CHECKPOINT
运营商一起使用并提供一个例子吗?
我知道在你的查询之前测试性能是有用的,但我并没有完全掌握它.此外,我不清楚与CHECKPOINT操作符结合使用.
如果我在查询之前执行它,它们需要花费更长的时间来运行,所以我猜测比较性能而不是准确评估它们是好的.
任何帮助,将不胜感激!
我需要使用TSQL脚本从SQL Servrer中删除图表支持表,存储过程,视图等.
有这样的脚本吗?
SQL 2005和2008.