我尝试在 SQL Server 2014 上使用“CONTAINS()”实现搜索机制。
我在这里阅读了https://technet.microsoft.com/en-us/library/ms142538%28v=sql.105%29.aspx和我需要的“SQL Server 2008 中的专业全文搜索”一书使用双引号来搜索精确的短语。
但是 eq 如果我使用它,CONTAINS(*, '"test"')我也会收到包含“numerictest”之类的词的结果。如果我尝试CONTAINS(*, '" test "')它是一样的。我注意到,结果较少,就像我会搜索CONTAINS(*, '*test*')前缀、后缀搜索一样,因此搜索之间肯定存在差异。
我没想到第一个语句中的“numerictest”。这种行为有解释吗?
四个简单的SELECT语句:
SELECT 33883.50 * -1;
SELECT 33883.50 / -1.05;
SELECT 33883.50 * -1 / 1.05;
SELECT (33883.50 * -1) / 1.05;
Run Code Online (Sandbox Code Playgroud)
但结果并不如我所料:
-33883.50
-32270.000000
-32269.96773000
-32270.000000
Run Code Online (Sandbox Code Playgroud)
第三个结果似乎是值得怀疑的结果.我可以看到发生了什么,首先SQL Server评估这个:
SELECT -1 / 1.05;
Run Code Online (Sandbox Code Playgroud)
得到答案:
-0.952380
Run Code Online (Sandbox Code Playgroud)
然后它接受该答案并使用它来执行此计算:
SELECT 33883.50 * -0.952380;
Run Code Online (Sandbox Code Playgroud)
得到(错误的)答案:
-32269.96773000
Run Code Online (Sandbox Code Playgroud)
但为什么这样做呢?
我想在保留标识列的同时导入一个表。
在cmd中,我输入:
bcp database.edg.Hello in C:\Users\Tech\Downloads\p.csv -c -E
-S 349024ijfpok.windows.net\MSSQLSERVER -T
Run Code Online (Sandbox Code Playgroud)
返回:
输入、输出或格式选项需要有效的表名
这是语法问题吗?
我需要将一个数据库的属性 datetime2 与其他数据库的属性 datetime 进行比较,因为我找不到将 datetime 转换为 datetime2 的方法。
我测试一下这句话:
select CAST(FechaAlta AS datetime) from tutors
Run Code Online (Sandbox Code Playgroud)
但返回此错误消息:
将 datetime2 数据类型转换为 datetime 数据类型导致值超出范围。
我收到了这个错误:
rsUnexpectedCompilerError:编译表达式时发生意外错误.本机编译器返回值:' - 10373741511'
,在现有项目的盒子rdlc上的新盒子上编译时Visual Studio 2015Windows 8.1
这发生在具有表达式的项目中的每个现有r d lc文件上.
我查了一下.我安装了最新的sql服务器数据工具(ssdt).
我还创建了一个全新的控制台应用程序,其中包含没有表达式的空报表,它编译得很好.当我向该空报表添加表达式时,如下例所示,它拒绝编译.
有谁知道我怎么能用表达式Visual Studio编译rdlcs?计算机在重新成像之前用于执行此操作windows 8.1.
这是一个无法编译的文件示例:
<?xml version="1.0" encoding="utf-8"?>
<Report xmlns="http://schemas.microsoft.com/sqlserver/reporting/2008/01/reportdefinition" xmlns:rd="http://schemas.microsoft.com/SQLServer/reporting/reportdesigner">
<Body>
<ReportItems>
<Textbox Name="Textbox1">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>="goo"</Value>
<Style />
</TextRun>
</TextRuns>
<Style />
</Paragraph>
</Paragraphs>
<rd:DefaultName>Textbox1</rd:DefaultName>
<Top>0.62375in</Top>
<Left>2.88417in</Left>
<Height>0.25in</Height>
<Width>1in</Width>
<Style>
<Border>
<Style>None</Style>
</Border>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</ReportItems>
<Height>2in</Height>
<Style />
</Body>
<Width>6.5in</Width>
<Page> …Run Code Online (Sandbox Code Playgroud) visual-studio reporting-services sql-server-2014 sql-server-data-tools visual-studio-2015
我知道这里有几个unpivot/cross apply讨论,但我找不到任何涵盖我的问题的讨论.到目前为止我得到的是以下内容:
SELECT Perc, Salary
FROM (
SELECT jobid, Salary_10 AS Perc10, Salary_25 AS Perc25, [Salary_Median] AS Median
FROM vCalculatedView
WHERE JobID = '1'
GROUP BY JobID, SourceID, Salary_10, Salary_25, [Salary_Median]
) a
UNPIVOT (
Salary FOR Perc IN (Perc10, Perc25, Median)
) AS calc1
Run Code Online (Sandbox Code Playgroud)
现在,我想要添加其他几个列,例如.一个名为Bonus,我也想放入Perc10,Perc25和Median Rows.
作为替代方案,我也使用交叉应用进行了查询,但是在这里,似乎你不能像强制转换那样"强制"对行进行排序.换句话说,我不能有一个自定义排序,但只有一个根据表中的数字排序,如果我是正确的?至少,在这里我得到的结果就像我希望的那样,但是行的顺序是错误的,而且我没有像Perc10那样的行名称,这样会很好.
SELECT crossapplied.Salary,
crossapplied.Bonus
FROM vCalculatedView v
CROSS APPLY (
VALUES
(Salary_10, Bonus_10)
, (Salary_25, Bonus_25)
, (Salary_Median, Bonus_Median)
) crossapplied (Salary, Bonus)
WHERE JobID = '1'
GROUP BY crossapplied.Salary,
crossapplied.Bonus
Run Code Online (Sandbox Code Playgroud)
Perc在这里代表Percentile.
输出意图是这样的: …
在寻找从JAVA到SQL Server获取数据的最快方法的过程中,我注意到我能想到的最快的JAVA方法,仍然比使用BULK INSERT慢12倍.
我的数据是从JAVA中生成的,而BULK INSERT只支持从文本文件中读取数据,因此除非我将数据输出到临时文本文件,否则不能使用BULK INSERT.反过来,这当然会成为巨大的性能打击.
从JAVA插入时,插入速度约为每秒2500行.即使当我测量时间后的该则ExecuteBatch for循环,和之前.因此,"创建"内存中的数据不是瓶颈.
使用BATCH INSERT插入时,插入速度约为每秒30000行.
两个测试都在服务器上完成.所以网络也不是瓶颈.有关为什么BATCH INSERT更快的任何线索?而且,如果在JAVA内可以获得相同的性能?
这只是一个需要加载一次的大数据集.因此可以临时禁用任何类型的日志记录(已经尝试过简单的日志记录),禁用索引(表没有),锁定,等等,...
到目前为止我的测试设置
数据库:
CREATE TABLE TestTable
( Col1 varchar(50)
, Col2 int);
Run Code Online (Sandbox Code Playgroud)
JAVA:
// This seems to be essential to get good speeds, otherwise batching is not used.
conn.setAutoCommit(false);
PreparedStatement prepStmt = conn.prepareStatement("INSERT INTO TestTable (Col1, Col2) VALUES (?, ?)");
for (int i = 1; i <= 10000; i++) {
prepStmt.setString(1,"X");
prepStmt.setInt(2,100);
prepStmt.addBatch();
}
prepStmt.executeBatch();
conn.commit();
Run Code Online (Sandbox Code Playgroud)
BULK INSERT:
// A text file containing "X …Run Code Online (Sandbox Code Playgroud) 我试图通过首先从我正在成功执行的"SupplierId"列转换逗号分隔值来加入两个表.但是,当我尝试通过外键"DCLink"连接到具有供应商名称的另一个表"供应商"时,问题就出现了.
这就是我的意思:
原始表的select语句,
SELECT InquiryId, SupplierId FROM Procure_InquiryDetails
Run Code Online (Sandbox Code Playgroud)
给出了这个结果
InquiryId SupplierId
1 2,3
2 175
3 170,280
5
7 12
8 5,9
Run Code Online (Sandbox Code Playgroud)
我可以使用此sql语句从SupplierId拆分列
;WITH CTE
AS
(
SELECT InquiryId,
[xml_val] = CAST('<t>' + REPLACE(SupplierId,',','</t><t>') + '</t>' AS XML)
FROM Procure_InquiryDetails
)
SELECT InquiryId,
[SupplierId] = col.value('.','VARCHAR(100)')
FROM CTE
CROSS APPLY [xml_val].nodes('/t') CA(col)
Run Code Online (Sandbox Code Playgroud)
并获得这些结果
InquiryId SupplierId
1 2
1 3
2 175
3 170
3 280
5
7 12
8 5
8 9
Run Code Online (Sandbox Code Playgroud)
当我应用这段代码将InquiryDetails表加入供应商名称上的供应商表时,
;WITH CTE
AS
(
SELECT InquiryId,
[xml_val] …Run Code Online (Sandbox Code Playgroud) 我正在尝试授予用户使用 OPENROWSET 将数据从 SQL Server 导出到 Excel 文件的权限。
用户收到以下错误:
无法为链接服务器“(null)”初始化 OLE DB 访问接口“Microsoft.ACE.OLEDB.12.0”的数据源对象。
我们可以重现运行以下代码块的问题,我可以成功运行而用户不能:
INSERT INTO OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0 Xml; HDR=YES;IMEX=0; Database=\\servername\exportdirectory\exportfile.xlsx', 'Select ExcelColumn from [TabName$]')
SELECT TOP 1 SQLColumn FROM SQLTable
Run Code Online (Sandbox Code Playgroud)
我在用户之间看到的唯一区别是,能够成功运行此命令并将数据导入 Excel 的用户是托管 SQL 实例和目标目录的 Windows 服务器上的管理员。
无法运行代码的用户对excel文件所在的目标文件目录具有完全控制权限,对SQL实例具有sysadmin权限。
有没有办法允许这个用户写入这个文件而不授予 Windows 服务器本身的完整服务器管理员权限?
sql-server-2014 ×10
sql-server ×7
sql ×2
t-sql ×2
bcp ×1
bulkinsert ×1
c# ×1
cmd ×1
contains ×1
cross-apply ×1
datetime ×1
datetime2 ×1
identity ×1
import ×1
java ×1
performance ×1
unpivot ×1
windows ×1