小编Unh*_*ean的帖子

为什么在切换要比较的字符串顺序时,差异函数会给出不同的结果?

在SQL Server中,如果我执行以下操作:

Difference ('Kennady', 'Kary') : I get 2
Run Code Online (Sandbox Code Playgroud)

如果我做:

Difference ('Kary', 'Kennady') : I get 3.
Run Code Online (Sandbox Code Playgroud)

我认为差异函数会查看引擎盖下的Soundex值,并给出一个0-4的数字,其中有多少个字符是相同的.

SELECT SOUNDEX('Kennady') AS [SoundEx Kennady]
    , SOUNDEX('Kary') AS [SoundEx Kary]
    , DIFFERENCE ('Kennady', 'Kary') AS [Difference Kennady vs Kary]
    , DIFFERENCE ('Kary', 'Kennady') AS [Difference Kary vs Kennady];
Run Code Online (Sandbox Code Playgroud)

t-sql sql-server

9
推荐指数
1
解决办法
338
查看次数

ClickOnce部署最低要求版本自动增加MSBuild

我们目前从Visual Studio 2010进行手动构建/发布,我们要求用户始终运行最新版本(在启动前检查和最低要求的版本集).我正在编写部署脚本,并且没有使用msbuild构建/发布的问题.但是,我没有找到一种在msbuild运行时自动增加所需最低版本的方法.我有什么选择在通过msbuild发布时自动将其搞砸?

我确实在这里看到了很多关于这个主题的文章,但它们似乎特定于VS而不是MSBuild.

msbuild clickonce

8
推荐指数
1
解决办法
2398
查看次数

轮询数据库与从数据库触发程序?

我有一个过程,其中只要该表中至少存在一行,在应用程序服务器中运行的程序必须访问Oracle数据库服务器中的表.每行数据涉及请求由程序执行某些数字运算的客户端.该程序只能串行执行此数字运算(即,一次对一个客户端而不是并行运行多个客户端).

因此,需要告知程序何时数据库中有数据可供处理.我也可以

  1. 让程序轮询数据库,或
  2. 让数据库触发程序.

问题1:有没有传统观点为什么一种方法可能比另一种方法更好?

问题2:我想知道程序是否有任何问题"一次运行"几个月(服务器中的任何进程是否会停止或破坏程序运行? - 如果是这样我不知道如何学习有一个问题,除非愤怒的客户).任何人都有在服务器上运行程序很长时间没有问题的经验?或者,如果服务器崩溃,有没有办法在服务器重新启动后自动启动它(即C语言可执行文件)程序,因此不需要人专门启动它?

任何建议表示赞赏

更新1:客户端正在等待结果,但是几秒钟的额外延迟(来自轮询)不是交易破坏者.

database oracle

8
推荐指数
2
解决办法
8278
查看次数

INSERT INTO在SQL Server 2012中随着时间的推移变得慢得多

我们有一个非常大的数据库WriteDB,存储原始交易数据,我们使用此表来快速写入.然后使用sql脚本我将数据导入WriteDBReadDB相对相同的表中,但扩展了一些额外的值+关系添加.导入脚本是这样的:

TRUNCATE TABLE [ReadDB].[dbo].[Price]
GO
INSERT INTO [ReadDB].[dbo].[Price]
SELECT a.*, 0 as ValueUSD, 0 as ValueEUR
from [WriteDB].[dbo].[Price] a
JOIN [ReadDB].[dbo].[Companies] b ON a.QuoteId = b.QuoteID
Run Code Online (Sandbox Code Playgroud)

所以最初有大约130万.此表中的行(~50GB).每天他们中的一些人都会添加,其中一些会发生变化,所以现在我们决定不会复杂化逻辑并重新导入所有数据.出于某种原因,由于某种原因,这个脚本的工作时间越来越长,几乎相同数量的数据.首先运行需要~1h,现在已经花了3h

另外SQL Server导入后工作也不顺利.导入(或在其中)如果我尝试运行不同的查询,即使是最简单的,它们通常也会因超时错误而失败.

这种不良行为的原因是什么以及如何解决这个问题?

sql database sql-server sql-server-2008 database-performance

7
推荐指数
1
解决办法
768
查看次数

AppFabric与System.Runtime.Caching

TLDR版本:用于缓存许多在我的.NET4 WCF服务中很少更改的小型数据库表.哪种技术最易于实施,最易于维护,最佳执行以及为什么?

长版:我开始为新项目制定缓存策略.它过去很简单,因为预先打包的选项较少(企业库为初学者),但现在.NET 4框架和AppFabric可用,我很难决定解决方案.基本上,我想缓存大量小的(<100行,2-4列)数据库表,这些表很少更改并让我的WCF服务从缓存中提取而不是每次从数据库中提取.我已经开始阅读文档,观看视频和下载培训材料,但经验是一位更好的老师,我很难找到这两者之间的比较.

任何建议将非常感谢!谢谢!

.net wcf caching appfabric

5
推荐指数
1
解决办法
1520
查看次数

用户数据和更改日志的哪种布局是最有效的,更少的存储消耗?

我的用户可以更新他们的信息,这些信息保存在表格中定义数量的列中,例如:user ( id INT, email VARCHAR, phone VARCHAR, address VARCHAR ).

我见过其他实现,比如Wordpress的实现,它将这些信息存储在一个usermeta用布局调用的表中( umeta_id INT, user_id INT, meta_key VARCHAR, meta_value VARCHAR ).

在我想要实现的更改日志中,我正在评估使用这样的解决方案或制作(我认为会更好),布局如下:userLog ( id INT, date TIMESTAMP, email VARCHAR, phone VARCHAR, address VARCHAR ).
因此,我可以记录任何用户在给定日期所拥有的所有信息.行只会记录更改,在未更改的列上具有NULL.

对于第一个问题:除了能够通过插入适当的方法创建新的信息类型之外,这种布局是否有任何优势meta_key
我有时认为如果性能在我的环境中是一个问题,这种布局可能不太合适,因为我会使用a VARCHAR来存储我想要存储的每种数据.

对于第二个问题:存储和选择/插入效率真的可以改变我正在考虑的两种解决方案吗?
哪个解决方案应该比其他解决方案更少(或更多)占用空间和/或更少(或更多)选择/插入效率?为什么?

mysql sql postgresql

5
推荐指数
1
解决办法
169
查看次数

SQL Server 兼容级别不起作用

我们最近遇到一个问题,我们的开发团队正在编写的 SQL 包含 SQL Server 2012/2014 中的新功能,并且在2008 兼容性中运行的 SQL Server 2014 允许这样做。

当我在开发服务器上运行它时

EXEC SP_DBCMPTLEVEL '<insert db>'
GO

IF 1=1
    THROW 51000, 'values match', 1; 
GO
Run Code Online (Sandbox Code Playgroud)

它返回这个

当前兼容级别为 100。
消息 51000,级别 16,状态 1,第 5 行
值匹配

在生产中,相同的 SQL 显示了这一点:

当前兼容级别为 100。
消息 102,级别 15,状态 1,第 5
行“THROW”附近的语法不正确。

我们尚未升级生产 SQL Server,并且遇到了部署问题。THROW 是 SQL Server 2012 中新增的一个关键字,因此我预计 2008 服务器会破坏该语法。对我来说,兼容性级别似乎已经被破坏了。

如何防止不兼容的 SQL 出现在开发环境中?

sql-server compatibility

5
推荐指数
1
解决办法
1392
查看次数

如何使用SQL从文字中获取变量值?

第1部分

DECLARE @A INT
DECLARE @B NVARCHAR(20)

SET @A=123
SET @B='@A'
Run Code Online (Sandbox Code Playgroud)

第2部分

DECLARE @SQL NVARCHAR(MAX)
SET @SQL='SELECT ' + @B

EXEC SP_EXECUTESQL @SQL
--Should return 123
Run Code Online (Sandbox Code Playgroud)

在非动态SQL中直接引用@A对于此任务是不可接受的。

第2部分中的上述内容通常是我想要做的。我了解该变量超出范围,因此无法像上面那样工作。我如何使用@B来获取@A的值?

更新20190322:我实际上忘记了这个问题,并在C#端而不是在数据库上实现了日志记录,但是如果可能的话,我再次感到好奇。同样,这需要通用,因为我希望将其放在任何存储过程的顶部,并且我不想针对每个sproc对其进行自定义。我在获取参数值的游标中遇到麻烦。这是一个工作示例:

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO    

ALTER PROCEDURE [dbo].[LoggingTest]
    @DateBegin datetime,
    @DateEnd datetime,
    @Person varchar(8000),
    @Unit varchar(8000)
AS
BEGIN
    --BEGIN LOGGING CODE
    DECLARE @String NVARCHAR(MAX)=''
    DECLARE @Parameter_name nvarchar(2000), @type nvarchar(50), @length SMALLINT, @Prec SMALLINT, @Scale SMALLINT, @Param_order SMALLINT, @Collation nvarchar(2000);  
    DECLARE param_cursor CURSOR FOR   
        SELECT
           'Parameter_name' = name, …
Run Code Online (Sandbox Code Playgroud)

t-sql sql-server dynamic

4
推荐指数
1
解决办法
205
查看次数

批处理文件以在csv中列出文件路径和文件名

我正在尝试制作一个批处理文件,其中列出文件夹和副导演中的所有文件,并导出到具有文件大小的 csv,我目前有这个:

@ECHO OFF &SETLOCAL

(FOR /f "delims=|" %%a  IN ('dir /s /b  /a-d') DO (
    FOR /f "tokens=1-9*" %%x IN ('dir /b  /a-d /tc  "%%~a"^| C:\Windows\System32\findstr "^[0-9]"') DO (

        ECHO %%a, %%z
    )
))>DIR.csv
TYPE DIR.csv
Run Code Online (Sandbox Code Playgroud)

但我需要的是文件目录和文件路径作为单独的记录

batch-file

4
推荐指数
1
解决办法
7015
查看次数

将 where 子句与 Union 一起使用

我有两个表 t1 和 t2,具有相同的列(id,desc)和数据。但其中一列 desc 对于同一主键 id 可能具有不同的数据。

我想从这两个表中选择所有这些行,以便 t1.desc != t2.desc

select a.id, b.desc 
FROM (SELECT * FROM t1 AS a
      UNION ALL 
      SELECT * FROM t2 AS b)
WHERE a.desc != b.desc
Run Code Online (Sandbox Code Playgroud)

例如,如果 t1 有 (1,'aaa') 和 (2,'bbb') 并且 t2 有(1,'aaa') 和 (2,'bbb1') 那么新表应该有 (2,'bbb ') 和 (2,'bbb1')

然而,这似乎不起作用。请让我知道哪里出了问题以及正确的方法是什么。

sql oracle

4
推荐指数
1
解决办法
6465
查看次数