如何在MS SQL Server 2008中将某些几何数据转换为地理数据?
当使用CHECKSUM列类型人为地创建哈希索引时,查找实际上是O(1)还是它仍然是O(lg n),就像它是聚簇索引一样?我有一个表,我将根据其ID列进行选择,我需要尽可能快地查找,因此聚簇索引是最快的选项吗?我正在寻找能提供O(1)性能的东西.
在Windows Server 2012R2上运行
我试图在IIS上禁用TLS 1.0,因为客户端有一个站点扫描程序,突出显示这是一个安全问题.
我有一个干净的测试服务器设置和应用程序正常运行,直到我禁用TLS 1.0.
我更新了所有适当的设置:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v2.0.50727]
"SchUseStrongCrypto"=dword:00000001
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319]
"SchUseStrongCrypto"=dword:00000001
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v2.0.50727]
"SchUseStrongCrypto"=dword:00000001
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v4.0.30319]
"SchUseStrongCrypto"=dword:00000001
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0]
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Client]
"Enabled"=dword:00000000
"DisabledByDefault"=dword:00000001
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server]
"Enabled"=dword:00000000
"DisabledByDefault"=dword:00000001
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1]
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Client]
"Enabled"=dword:ffffffff
"DisabledByDefault"=dword:00000000
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server]
"Enabled"=dword:ffffffff
"DisabledByDefault"=dword:00000000
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2]
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client]
"Enabled"=dword:ffffffff
"DisabledByDefault"=dword:00000000
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server]
"Enabled"=dword:ffffffff
"DisabledByDefault"=dword:00000000
Run Code Online (Sandbox Code Playgroud)
在事件查看器中,我得到:
生成致命警报并将其发送到远程端点.这可能导致连接终止.TLS协议定义的致命错误代码为70.Windows SChannel错误状态为105.
如果我还原TLS 1.0(启用,而不是DisabledByDefault)的注册表设置,一切都很好.
在system.web中使用:
<httpRuntime targetFramework="4.7.2" />
Run Code Online (Sandbox Code Playgroud)
我错过了什么?
看起来我的数据仓库项目明年将转向Teradata(来自SQL Server 2005).
我正在寻找有关Teradata最佳实践的资源 - 从SQL方言的限制到习惯用法以及使查询表现良好的惯例 - 特别是如果它们突出显示与SQL Server 2005明显不同的内容.特别提示类似于SQL的艺术(更注重Oracle).
我的业务流程目前在T-SQL存储过程中,并且非常依赖SQL Server 2005的功能,如PIVOT,UNPIVOT和Common Table Expressions,每月从4TB数据仓库生成大约2700行的输出.
我输入的数据包含一些比相应数据库字段长的"流氓"字段.这会导致我的导入脚本使用SQL INSERT语句,并发出警告:
Msg 8152, Level 16, State 13, Line 2
String or binary data would be truncated.
Run Code Online (Sandbox Code Playgroud)
如何强制截断这些字段并使我的脚本完成?
任何想法是否可以单独使用T-SQL在另一个数据库中创建一个过程,其中数据库的名称是预先知道的并且必须从表中读取?有点像这个例子:
Use [MasterDatabase]
Declare @FirstDatabase nvarchar(100)
Select Top 1 @FirstDatabase=[ChildDatabase] From [ChildDatabases]
Declare @SQL nvarchar(4000)
Declare @CRLF nvarchar(10) Set @CRLF=nchar(13)+nchar(10)
Set @SQL =
'Use [+'@Firstdatabase+']'+@CRLF+
'Go'+@CRLF+
'Create Proc [Test] As Select 123'
Exec (@SQL)
Run Code Online (Sandbox Code Playgroud)
看看我想做什么?此示例失败,因为Go实际上不是T-SQL命令,但它是查询分析器/ SQL管理工作室识别的内容并产生错误.删除Go并且它也失败,因为Create Proc必须是脚本的第一行.Arrgg!
T-SQL的语法不允许你这样做:
创建[OtherDatabase].[dbo].[测试]
这是一种耻辱,因为它会起作用!你可以用Select语句做到这一点,耻辱它是不一致的:
选择*来自[OtherDatabase] .. [TheTable]
干杯,罗布.
在最近的一个Stackoverflow播客中,Jeff谈到了一个单独的图像文件,其中包含遍布整个页面的所有小图像,然后使用CSS剪切它,以便正确显示所有图像.重点是减少服务器请求的数量,以便更快地加载页面.我就像"哇,真的很酷,我真的可以在我们的产品中使用它".
我的问题是:如何用CSS完成这项工作?我需要用背景图像加载图像,但是如何指定大图像中子图像的偏移?也就是说,假设大图像中有一个锤子图标(50px,50px),并且它的大小为32px*32px,我怎么能强制浏览器只显示那个位?
我想写一个'通用'脚本来操作许多数据库.'use databasename'命令将分发在脚本体中.我宁愿在脚本的顶部显示数据库名称信息.理想情况下:
declare @db varchar(100) set @db = 'data_in' use @db
这失败了.也许吧
declare @db varchar(100) set @db = 'data_in' exec ('use '+@db)
这会执行,但可能只在字符串中的查询上下文中更改数据库.
那么有没有其他方法可以将整个脚本放入字符串并以这种方式执行它,即.治愈比疾病更糟?
我有一个5,651,744行的表,主键由6列(int x 3,smallint,varchar(39),varchar(2))组成.我希望使用此表和另一个共享此主键的表以及添加的另一列但具有37m行来提高性能.
在预期添加列以创建哈希键时,我进行了分析并发现了18,733次冲突.
SELECT SUM(CT)
FROM (
SELECT HASH_KEY
,COUNT(*) AS CT
FROM (
SELECT CHECKSUM(DATA_DT_ID, BANK_NUM, COST_CTR_NUM,
GL_ACCT_NUM, ACCT_NUM, APPN_CD) AS HASH_KEY
FROM CUST_ACCT_PRFTBLT
) AS X
GROUP BY HASH_KEY
HAVING COUNT(*) > 1
) AS Y
SELECT COUNT(*)
FROM CUST_ACCT_PRFTBLT
Run Code Online (Sandbox Code Playgroud)
它差不多两倍 BINARY_CHECKSUM()
考虑到我所覆盖的目标空间的相对较小量,这看起来是否太高(.33%)?如果碰撞很高,那么在连接中加入这个制造的密钥是否有利于每行额外4个字节的成本,因为你仍然必须加入常规列来处理偶尔的碰撞?
这个答案对这个问题很好,但是我正在寻找ADO.NET代码能够数组或表发送到Oracle程序,然后使用该表的过程.
在SQL Server表值参数中,它非常简单:
CREATE TYPE [dbo].[IntTable] AS TABLE(
[intvalue] [int] NOT NULL,
PRIMARY KEY CLUSTERED
(
[intvalue] ASC
)WITH (IGNORE_DUP_KEY = OFF)
)
GO
CREATE PROCEDURE dbo.UseTable
@SomeInt INT
,@IntTable dbo.IntTable READONLY
AS
BEGIN
-- Do whatever using @SomeInt and @IntTable like:
INSERT INTO Assignments (masterid, childid)
SELECT @SomeInt, intvalue
FROM @IntTable
END
GO
Run Code Online (Sandbox Code Playgroud)
然后在客户端:
var param = new List<int>();
param.Add(1);
param.Add(2);
Cm.Parameters
.AddWithValue("@IntTable", param /* IEnumerable<Int> */)
.SqlDbType = SqlDbType.Structured
Run Code Online (Sandbox Code Playgroud)
这就是我目前拥有的:
CREATE OR REPLACE TYPE TRAIT_ID_TABLE …
Run Code Online (Sandbox Code Playgroud)