我导入了一个数据库,其中包含一些数据,以便与另一个数
目标数据库具有排序规则Latin1_General_CI_AS
,源数据库具有排序规则SQL_Latin1_General_CP1_CI_AS
.
我确实将源数据库的排序规则更改为Latin1_General_CI_AS
使用SQL Server Management Studio.但是里面的表格和列仍然是旧的整理.
我知道我可以使用以下方法更改列:
ALTER TABLE [table]
ALTER COLUMN [column] VARCHAR(100) COLLATE Latin1_General_CI_AS
Run Code Online (Sandbox Code Playgroud)
但是我必须为所有表和内部的所有列执行此操作.
在我知道开始编写一个存储过程之前,它读取所有表并在所有类型的列中,varchar
并在表和列游标循环中更改它们...
有没有人知道一个更简单的方法,或者是通过运行程序中所有表的脚本执行此操作的唯一方法?
我最近开始在服务器系统上使用Visual Studio Code,我没有安装Studio IDE.我非常喜欢它但遇到了问题.当我打开一个文件(之前使用过Notepad ++)时,编辑器检测编码并为我设置它.在Windows服务器上有许多文件windows-1252
但仍然vscode
只是UTF-8
默认使用.
我知道我可以,reopen with encoding Western (Windows 1252)
但我经常忘记它,我有时会摧毁一些保存它的内容.
所以我还没有找到任何参数,有没有办法进行vscode
检测编码并在打开文件时自动设置?
我想知道.我有一个复杂的查询,它在大约3秒内在SQL Server 2005 Express版本中运行.
主表有大约300k行.
当我添加
ROW_NUMBER() OVER (ORDER BY date_column)
Run Code Online (Sandbox Code Playgroud)
它date_column
是一个datetime
列需要123秒.
如果我做
ROW_NUMBER() OVER (ORDER BY string_title)
Run Code Online (Sandbox Code Playgroud)
它再次在3秒内运行.
我在datetime
列上添加了一个索引.没变.还有123秒.
然后我尝试了:
ROW_NUMBER() OVER (ORDER BY CAST(date_column AS int))
Run Code Online (Sandbox Code Playgroud)
并且查询再次在3秒内运行.
由于转换需要时间,为什么SQL Server的行为如下?
更新:似乎ROW_NUMBER完全忽略我的WHERE语句并为所有可用条目构建行列列表?任何人都可以证实吗?
在这里,我在SQL Management Studio中复制了一个更好的可读(仍然是逻辑:)):
SELECT ROW_NUMBER() OVER (ORDER BY xinfobase.lid) AS row_num, *
FROM xinfobase
LEFT OUTER JOIN [xinfobasetree] ON [xinfobasetree].[lid] = [xinfobase].[xlngfolder]
LEFT OUTER JOIN [xapptqadr] ON [xapptqadr].[lid] = [xinfobase].[xlngcontact]
LEFT OUTER JOIN [xinfobasepvaluesdyn] ON [xinfobasepvaluesdyn].[lparentid] = [xinfobase].[lid]
WHERE (xinfobase.xlngisdeleted=2
AND xinfobase.xlinvalid=2) …
Run Code Online (Sandbox Code Playgroud) 我开发了一个自定义安全扩展,以使从我们的Intranet产品到报告服务的单一登录。在我订阅之前,它就像一种魅力。
开发确实像这里建议的那样:http : //msdn.microsoft.com/en-us/library/ms155029.aspx
登录,上传和管理报告有效。每个用户都可以阅读和打开报告。我们还实现了授权并覆盖了此处描述的功能:http : //msdn.microsoft.com/zh-cn/library/ms152800.aspx
管理文件夹,报告也可以。
当我广告订阅以呈现报告以通过电子邮件发送报告时,系统会说用户没有足够的权限通过电子邮件发送报告。
notification!WindowsService_0!1674!10/09/2013-14:02:04:: i INFO: Handling subscription f70f374e-28fa-4ba2-8b0e-6633f1299ee9 to report Projekt Aufwand, owner: rausch, delivery extension: Report Server Email.
library!WindowsService_0!1674!10/09/2013-14:02:04:: i INFO: RenderForNewSession('/Projektverwaltung/Projekt Aufwand')
library!WindowsService_0!1674!10/09/2013-14:02:04:: e ERROR: Throwing Microsoft.ReportingServices.Diagnostics.Utilities.AccessDeniedException: , Microsoft.ReportingServices.Diagnostics.Utilities.AccessDeniedException: Die dem Benutzer 'rausch' erteilten Berechtigungen reichen zum Ausführen des Vorgangs nicht aus.;
library!WindowsService_0!1674!10/09/2013-14:02:04:: i INFO: Initializing EnableExecutionLogging to 'True' as specified in Server system properties.
emailextension!WindowsService_0!1674!10/09/2013-14:02:04:: e ERROR: Error sending email. Exception: Microsoft.ReportingServices.Diagnostics.Utilities.RSException: Die dem Benutzer 'rausch' erteilten Berechtigungen …
Run Code Online (Sandbox Code Playgroud) 我使用的是 Mac 操作系统,自从最新的 Rails 版本以来,删除键不再起作用。
\n\xe2\x9d\xaf rails -v\nRails 7.0.4\n\xe2\x9d\xaf ruby -v\nruby 3.1.2p20 (2022-04-12 revision 4491bb740a) [arm64-darwin21]\n
Run Code Online (Sandbox Code Playgroud)\n当我点击delete
而不是删除它插入的字符和当前光标位置时^[[3~
。
我不知道如何解决这个问题。之前的rails版本没有这个问题。
\n我们正在使用当前的 tinyTDS gem 0.6.2 在 rails 3.2.12 (ruby 1.9.3) 上运行 ruby on rails 应用程序。
我们使用 MS SQL 2012 或 2014 并面临比平常更多的以下错误消息:
TinyTds::Error: Adaptive Server connection timed out: EXEC sp_executesql [...]
Run Code Online (Sandbox Code Playgroud)
数据库自动关闭已关闭。TCP 套接字超时是默认的 Windows 系统。
应用程序服务器在机器 #1(windows 服务器)上,SQL 服务器在机器 #2(windows 服务器)上。
当我检查连接 (netstat) 时,我为大约 20-30 个用户打开了 250 个连接。我运行 perform.exe 来查看 SQL 服务器上数据和日志磁盘的空闲时间。
database.yml 有连接pool:32
和reconnect:true
.
在我看来,tinyTDS 丢失了连接并且任何异常都阻止了重新连接。
问题是,我如何调试问题以找出问题所在?
更新
我的错,原错误信息属于tinytDS 0.5.x。自从我更新到最新版本后,我额外或改为收到以下错误:
ActiveRecord::LostConnection (TinyTds::Error: DBPROCESS is dead or not enabled: BEGIN TRANSACTION):
Run Code Online (Sandbox Code Playgroud) 我今天阅读了一个着名的商业供应商提供的针对SQL工具的45个技巧 - 数据库 - 性能提示 - 开发人员文档,有一个提示让我感到困惑:
如果可能,请避免数据库中的NULL值.如果不是,请使用适当的IS NULL和IS NOT NULL代码.
我喜欢使用NULL值,因为对我而言,如果一个值从未设置过或者它0
或者是一个值,则会有所不同string empty
.所以数据库有这个用于一个porpuse.
那么这个提示是无意义的,还是我应该采取措施来防止在我的数据库表中有NULL值?是否会影响性能,NULL
而不是填充值number
或string
值?
我需要填写一个时间表来使用它来加入报告服务中的数据.通常我使用此代码执行此操作:
TRUNCATE TABLE tqTimeTable
DECLARE @CNT int
DECLARE @DATE datetime
DECLARE @END int
SET @CNT = 1
SET @DATE = 25567 -- 01.01.1970
SET @END = 20000 -- + 20k days => years 2024
WHILE(@CNT < @END)
BEGIN
INSERT INTO tqTimeTable (Tag, Monat, Jahr)
VALUES (DATEADD(day,@CNT,@DATE), MONTH(DATEADD(day,@CNT,@DATE)), YEAR(DATEADD(day,@CNT,@DATE)))
SET @CNT = @CNT + 1
END;
Run Code Online (Sandbox Code Playgroud)
但这需要一段时间(在我的测试系统大约2分钟),所以我希望有人有同样的问题,并解决它比我更好.当我从.NET连接中激活此语句时,我需要一个更快的解决方案,或者如果没有一个提高我的连接超时.
在数据库中,我通常使用基于 XML 的拆分函数版本。后来通过一些研究,我创建了 split 函数的 Assembly CLR 版本。
在数据库更新过程(修补程序)中,我删除所有用户函数,修补数据库,然后再次创建用户函数。由于补丁过程,它将再次恢复拆分功能的 XML 版本。
到目前为止,我检查了 MSDN,但找不到任何提示:如何检查 DLL 是否已注册为数据库内的程序集?
在 Management Studio 中,我可以打开数据库 -> 程序能力 -> 程序集,并且可以看到 DLL(如果已注册)。但我想以编程方式执行此操作,如果 DLL 可用,则在 CREATE FUNCTION 上使用 CLR 版本,否则我想使用 XML 版本来确保拆分函数在任何情况下都可用。
有谁知道这是否可能?
sql-server ×5
performance ×2
c# ×1
collate ×1
encoding ×1
irb ×1
permissions ×1
ruby ×1
sql ×1
t-sql ×1
terminfo ×1
tiny-tds ×1