我继承了一个包含数百个列的大型 (SQLServer) 数据库,这些列代表一件事或另一件事的数量。这些值的单位(例如“加仑”、“英寸”等)存储在扩展属性的 MS_Description 字段中。我想知道是否有更好的方法来存储这些信息。我认为用于文档目的很好,但很难根据这些数据进行可靠的单位换算计算。在这一点上,我不准备进行侵入性更改,但如果我有机会这样做,在这方面推荐的最佳实践是什么?在我的脑海中,选项可能包括:
更新:阅读@Todd Everett 的回答后,我想到了一个可能的解决方案,所以我将继续回答我自己的问题。(见下文)
我正在使用RAISERROR()
提供一些基本的单元测试功能(如这里),但我对无法FLOATs
在错误消息中使用感到沮丧。我知道我可以将浮点数转换为字符串,但我RAISERROR
在每个单元测试中都使用,我不想为每个测试添加另一行代码。(我的单元测试已经够啰嗦了!)有没有办法在参数列表中执行内联强制转换/转换RAISERROR
?或者有其他方法可以解决这个缺陷吗?
更新: 所以最终我希望我能做的是:
RAISERROR('Unit Test FAILED! %f', 11, 0, @floatParm)
Run Code Online (Sandbox Code Playgroud)
不幸的是,RAISERROR
一般不处理 %f 或浮点数。所以我必须这样做:
DECLARE @str VARCHAR(40) = CAST(@floatParm AS VARCHAR(40))
RAISERROR('Unit Test FAILED! %s', 11, 0, @str)
Run Code Online (Sandbox Code Playgroud)
...当它分散在数十个单元测试中时,它看起来就像一团糟。所以我想把它归结为这样的:
RAISERROR('Unit Test FAILED! %s', 11, 0, CAST(@floatParm AS VARCHAR(40))
Run Code Online (Sandbox Code Playgroud)
但这给了我一个Incorrect syntax near 'CAST'
信息。我不明白为什么这是非法的,但确实如此。我可以在这里使用另一个“一个班轮”吗?
根据官方SQL Server 文档,不推荐使用“解决方案、项目和项目”。MSDN 页面顶部的显眼(虽然有些神秘)警告横幅指出:
“此功能将在 Microsoft SQL Server 的未来版本中删除。避免在新的开发工作中使用此功能,并计划修改当前使用此功能的应用程序。”
不幸的是,没有提供替代存储/容器策略的建议。那么,存储和打包构成数据库应用程序的各种脚本、查询和文件的推荐方法是什么?我也很想知道你们中是否有人在您当前的工作中实际使用了解决方案或项目框架,以及您使用它们的目的。
[注意:我意识到我可以使用 VS2010 来实现这个功能,但我对基于 SSMS 的方法感兴趣(原因在这个问题的答案中表达了)。]