我在SQL 7天后就知道了一些性能原因,但SQL Server 2005中是否仍然存在相同的问题?如果我在存储过程中有一个我想单独操作的结果集,那么游标仍然是一个糟糕的选择吗?如果是这样,为什么?
我需要知道以下服务的默认端口设置
我需要知道不同版本的SQL Server(2000,2005,2008)的这些服务的端口设置
另请告诉我默认端口设置是否会根据sql server版本更改
提前致谢.
我有一个C#代码,批量处理很多插入语句.在执行这些语句时,我得到"字符串或二进制数据将被截断"错误和事务roledback.
要找出导致这种情况的insert语句,我需要在SQLServer中逐个插入,直到我遇到错误.
有没有聪明的方法来查找哪个语句和哪个字段使用异常处理导致此问题?(SQLEXCEPTION)
我正在尝试比较SQL查询中的日期时间字段中的时间,但我不知道它是否正确.我不想比较日期部分,只是时间部分.
我这样做:
SELECT timeEvent
FROM tbEvents
WHERE convert(datetime, startHour, 8) >= convert(datetime, @startHour, 8)
Run Code Online (Sandbox Code Playgroud)
这是对的吗?
我问这个是因为我需要知道是否08:00:00小于或大于07:30:00,我不想比较日期,只是时间部分.
谢谢!
我有一个执行select语句的存储过程.我希望我的结果按日期字段排序,并显示所有记录首先是NULL日期,然后是最近的日期.
声明如下:
SELECT a,b,c,[Submission Date]
FROM someView
ORDER BY [Submission Date] ASC
Run Code Online (Sandbox Code Playgroud)
现在,这将首先显示所有具有NULL提交日期的记录,但是当我到达具有日期值的行时,它们不是视图中的最新日期.
如果我用DESC替换ASC,那么我按照我想要的顺序获取日期,但NULL值位于我的结果集的底部.
有没有办法构建我的查询,以便我可以在顶部显示空值,然后当有日期值时,为了命令它们从最近的下降到最早?
我有一个SQL查询,它查询我不需要也不想理解的巨大数据库(如数百个具有难以读取的名称的表,如CMM-CPP-FAP-ADD)数据库.此查询的结果需要存储在临时表中以提供报告.
我需要创建临时表,但是要查看数百个视图/表以查找此处表示的数据类型,我不得不怀疑是否有更好的方法来构造此表.
任何人都可以建议我如何使用任何SQL Server 2008工具来划分我的SQL 2000数据库中的源数据类型?
作为一般示例,我想通过以下查询来了解:
SELECT Auth_First_Name, Auth_Last_Name, Auth_Favorite_Number
FROM Authors
Run Code Online (Sandbox Code Playgroud)
而不是实际的结果,我想知道:
Auth_First_Name is char(25)
Auth_Last_Name is char(50)
Auth_Favorite_Number is int
Run Code Online (Sandbox Code Playgroud)
我对约束不感兴趣,我真的只想知道数据类型.
我有一个包含数百个笨拙命名表的数据库(CG001T,GH066L等),我对每个人都有"友好"名称的观点(例如,"CUSTOMERS"视图是"SELECT*FROM GG120T") .我想在我的视图中添加"WITH SCHEMABINDING",以便我可以获得与之相关的一些优点,例如能够索引视图,因为少数视图已经计算了动态计算成本昂贵的列.
SCHEMABINDING这些观点是否存在缺点?我发现一些文章含糊地暗示了缺点,但从未详细介绍过它们.我知道一旦视图是模式绑定的,你就不能在没有先删除视图的情况下改变任何会影响视图的内容(例如,列数据类型或排序规则),所以这是一个,但除此之外?似乎索引视图本身的能力远远超过了更仔细地规划模式修改的缺点.
我tinyint在数据库中有一个列,我希望将其转换Int32为SqlDataReader.
我该怎么做呢?
编辑#1
我最近不得不这样做.
int a = dataReader.GetByte(dr.GetOrdinal("ColumnName"));
Run Code Online (Sandbox Code Playgroud)
#In除了答案
SQL Server数据类型映射
bigint - GetInt64
binary - GetBytes
int - GetInt32
money - GetDecimal
rowversion - GetBytes
smallint - GetInt16
tinyint - GetByte
uniqueidentifier - GetGuid
...
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请访问 - SQL Server数据类型映射
我有一个包含数百个表的非常大的数据库,经过许多产品升级后,我确信其中一半不再使用了.如何判断是否正在从中选择一个表?我不能只使用Profiler - 我不仅要观看超过几天,而且还有数千个存储过程,并且探查器不会将SP调用转换为表访问调用.
我唯一能想到的是在感兴趣的表上创建聚簇索引,然后监视sys.dm_db_index_usage_stats聚类索引是否有任何搜索或扫描,这意味着表中的数据已加载.但是,在每个表上添加聚簇索引是一个坏主意(由于许多原因),因为这是不可行的.
我还有其他选择吗?我一直想要一个像"SELECT触发器"这样的功能,但是可能还有其他原因导致SQL Server没有这个功能.
解:
谢谢,Remus,指出我正确的方向.使用这些列,我创建了以下SELECT,它完全符合我的要求.
WITH LastActivity (ObjectID, LastAction) AS
(
SELECT object_id AS TableName,
last_user_seek as LastAction
FROM sys.dm_db_index_usage_stats u
WHERE database_id = db_id(db_name())
UNION
SELECT object_id AS TableName,
last_user_scan as LastAction
FROM sys.dm_db_index_usage_stats u
WHERE database_id = db_id(db_name())
UNION
SELECT object_id AS TableName,
last_user_lookup as LastAction
FROM sys.dm_db_index_usage_stats u
WHERE database_id = db_id(db_name())
)
SELECT OBJECT_NAME(so.object_id) AS TableName,
MAX(la.LastAction) as LastSelect
FROM sys.objects so
LEFT
JOIN LastActivity la
on so.object_id = la.ObjectID
WHERE …Run Code Online (Sandbox Code Playgroud) 我知道,我知道我在问题中写的内容我不应该感到惊讶.但我的情况是继续在继承的POS系统上工作,我的前任显然不知道JOIN,所以当我查看其中一个加载60秒的内部页面时,我发现它很快,将这8个查询重写为一个查询JOINs情况.问题是,除了不了解JOIN之外,他似乎也对多个数据库感到惊讶并且惊讶,他们使用不同的排序规则.事实上,我们使用所有"正常"的拉丁字符,说英语的人会考虑整个字母表,这整个事情将在几个月内不再使用,所以我只需要一个bandaid.
简而言之,我需要某种方法来转换为单个排序规则,因此我可以比较两个数据库中的两个字段.
确切的错误是:
无法在等于操作中解决"SQL_Latin1_General_CP850_CI_AI"和"SQL_Latin1_General_CP1_CI_AS"之间的排序规则冲突.