如何从sql语句返回常量?
例如,如果我的(布尔表达式)为真,我将如何更改下面的代码以便"我的消息"将返回
if (my boolean expression)
"my message"
else
select top 1 name from people;
Run Code Online (Sandbox Code Playgroud)
我正在使用ms sql 2000
如果我插入或更新一个超过字段大小的字符串,我怎么能告诉SQL Server不要引发错误 - 我想在这个例子中进行静默截断.
使用英语查询部署SQL Server 2000.那时,我还年轻,不熟悉SQL,所以我跳过那一章.现在,经过多年的努力,我们再次想出了一个可以理解简单用户问题的逻辑程序.
还有其他选择吗?英语查询现在在哪里?
我有一个SQL Server 2000数据库,大约有220个表.这些表之间有许多外键关系.通过性能分析,我们发现许多这些外键关系都缺少索引.我不想对性能问题做出反应,而是积极主动地找到所有缺少索引的外键.
如何以编程方式确定哪个外键缺少索引?
我正在尝试使用SQL Server Management Studio的Import Data任务将数据导入表中.它只带来了26行,原来的49,325行.(编辑:这是99.9%来自的地方:(1-26/49325)*100 = 99.9%
在企业管理器中正确使用DTS会带来所有49,325行.
为什么SSMS没有导入所有行,报告它成功传输了49,325,并且没有遇到任何错误?为什么企业管理器能够正确导入所有49,325行?
Microsoft SQL Server Management Studio版本:10.0.1600.22(从SQL Server 2008开始,今天安装在全新的Windows 7计算机上,应用了SP1)
该STRTransactions表最初是空的:
Source是以下ContosoFrobManager数据库lithium:
目的地是Grob数据库lithium;
我想从一个(或多个)表复制数据:

我想复制STRTransactions表格:

您可以附加到现有表,这很好(它是空的).我想启用身份插入.并且不要尝试导入时间戳(因为你无论如何都会抱怨):

马上跑,没关系:

是的,你要做的事情:

我设法在传输49,325行时捕获它,大约在1k标记处:

全部完成.成功复制了所有49,325行:

这是报告:
执行成功
初始化数据流任务(成功)
初始化连接(成功)
设置SQL命令(成功)
设置源连接(成功)
设置目标连接(成功)
验证(成功)消息警告0x80049304:数据流任务1:警告:无法打开全局共享内存以与性能DLL通信; 数据流性能计数器不可用.要解决此问题,请以管理员身份运行此程序包,或在系统控制台上运行.(SQL Server导入和导出向导)警告0x80047076:数据流任务1:输出"OLE DB源输出"(11)上的输出列"timestamp"(158)和组件"Source - STRTransactions"(1)随后未使用在数据流任务中.删除此未使用的输出列可以提高数据流任务性能.(SQL Server导入和导出向导)
准备执行(成功)
预执行(成功)
执行(成功)
复制到[dbo].[STRTransactions](成功)传输49325行
消息信息0x402090df:数据流任务1:"组件"目标中的数据插入的最终提交 - STRTransactions"(163)"已启动.(SQL Server导入和导出向导)信息0x402090e0:数据流任务1:"组件"目标中的数据插入的最终提交 - STRTransactions"(163)"已结束.(SQL Server导入和导出向导)
- 后执行(成功)消息信息0x4004300b:数据流任务1:"组件"目标 - STRTransactions"(163)"写入49325行.(SQL Server导入和导出向导)
优秀.全部完成." 写了49325行 ". …
我正在尝试更改表以添加新列,然后在其中插入新行.
ALTER TABLE Roles ADD ModifiedDate DateTime;
INSERT INTO Roles (Name, [Description], CreatedBy, BuiltIn, Created, ModifiedDate)
VALUES ('Name', 'Description', 0, 1, GETDATE(), GETDATE())
Run Code Online (Sandbox Code Playgroud)
但我得到:
Msg 207, Level 16, State 1, Line 1
Invalid column name 'ModifiedDate'.
Run Code Online (Sandbox Code Playgroud)
当我尝试在SQL Server Management Studio中运行上述SQL时.我认为这是Studio错误,而不是服务器错误.如果SQL运行,它应该工作,因为该列将存在.
如何向表中添加新列然后插入该表?
版本:
例如,2 FEB是一年中的第33天.
是否有内置的T-SQL函数返回日期(在SQL Server 2000中)?或者你是否必须使用强制转换来获取所提供日期的一年中的第一天,然后再进行DateDiff?
当使用SetFirstResult(start)和SetMaxResults(count)实现分页的方法时,我注意到生成的查询只执行a select top count * from some_table并且它不考虑start参数或至少不考虑数据库级别.看来如果我指示NHibernate执行以下查询:
var users = session.CreateCriteria<User>()
.SetFirstResult(100)
.SetMaxResults(5)
.List<User>();
Run Code Online (Sandbox Code Playgroud)
105条记录将在数据库服务器和应用程序之间传输,这将记录前100条记录.对于包含许多行的表,这可能是个问题.
我已经验证了使用SQLite数据库NHibernate利用OFFSET和LIMIT关键字来过滤数据库级别的结果.我知道在SQL Server 2000中没有等效的OFFSET关键字和Oracle ROWNUM,但有没有解决方法?SQL Server 2005/2008怎么样?
有没有办法查询数据库并检索所有存储过程及其参数的列表?
我正在使用SQL Server 2000.
在Sql Server中是否有类似printf的功能?我想要与RAISERROR函数相同的功能,但我不想抛出错误或打印消息,而是想在varchar中编写它,因为我的ERP不会让我处理错误消息.
这是SQL Server 2000.
RAISERROR的实际工作示例:
declare @name varchar(10)
set @name = 'George'
RAISERROR ('Hello %s.', 10, 1, 'George')
Run Code Online (Sandbox Code Playgroud)
版画 Hello George
我在找什么:
declare @name varchar(10), @message varchar(50)
set @name = 'George'
SET @message = printf('Hello %s.', 'George')
return @message
Run Code Online (Sandbox Code Playgroud)
这会回来 Hello George
sql-server-2000 ×10
sql-server ×8
sql ×3
t-sql ×3
etl ×1
foreign-keys ×1
nhibernate ×1
paging ×1
ssms ×1