geography
空间数据类型 geography
用来表示圆形地球空间坐标系中的数据,如 GPS 经纬度坐标。
SqlServer 提供一些列方法用于创建、构造和查询这些数据。具体信息请参照 MSDN 文档 。
空间数据类型 geography
用来表示圆形地球空间坐标系中的数据,如 GPS 经纬度坐标。
SqlServer 提供一些列方法用于创建、构造和查询这些数据。具体信息请参照 MSDN 文档 。
在 MSSM 中显示的查询耗时是秒级的,没有毫秒。下面是使用 DATEDIFF
函数来查看毫秒级的耗时的方法。
DECLARE @start_time DATETIME, @end_time DATETIME
SET @start_time = GETDATE()
-- exec some sqls
SET @end_time = GETDATE()
SELECT DATEDIFF(MS, @start_time, @end_time) AS [耗时(毫秒)]
为了防止查询不被修改阻塞,在一些允许脏读的查询里使用了 WITH(NOLOCK)
关键字。
另外因为数据库使用了主从结构,从库作为只读库,按照编码规约,所有的查询都应该加上 WITH(NOLOCK)
关键字。但是在实际编码的过程中,有些地方并没有遵循该规约。
So,准备在读库的连接上通过设置隔离级别(IsolationLevel
)为 IsolationLevel.ReadUncommitted
来防止被阻塞。
那么 WITH(NOLOCK)
& IsolationLevel.ReadUncommitted
有什么区别呢?
今天逛论坛才发现外键约束还是可以禁用的。
使用 NOCHECK CONSTRAINT
与 ALTER TABLE
配合来禁用约束。
ALTER TABLE [dbo].[TableName] NOCHECK CONSTRAINT [FK_TableName_OtherTableName]
在 Sql Server 中,一个 nvarchar
型的字段,如果该字段值的末尾有空格,即使用不带空格的字符串去查询,也能够查询出来。
下面是摘自 SQLServer 中比较末尾带有空格的字符串遇到的坑 中的例子:
declare @a nvarchar(50);set @a=N'happycat1988'
declare @b nvarchar(50);set @b=N'happycat1988 '
if(@a = @b)
select 'True' as 直接等号比较
else
select 'False' as 直接等号比较
if(@a like @b)
select 'True' as like比较
else
select 'False' as like比较
新项目使用了 .NET Core 来开发,上线到生产后会不定时的报如下 SqlException:
A transport-level error has occurred when receiving results from the server. (provider: TCP Provider, error: 0 - Success)
生产的数据库(SqlServer)采用的一写多读的配置,读库采用 HAProxy 实现负载均衡。
在 HAProxy 中设置了数据库连接的超时时间(50s),超过该时间则将数据库连接关闭。
写库由于是单台,采用的是直连。
将查询结果集以 XML 形式展现,也可以自定义输出格式
SELECT * FROM TABLENAME FOR XML PATH