运行SQLCMD.exe并为脚本变量提供命令行参数时,我希望命令行上提供的值将覆盖SQL脚本文件中定义的值.
例如
给出以下SQL脚本:
:setvar XXX "SQL script"
print '$(XXX)'
Run Code Online (Sandbox Code Playgroud)
和命令行:
sqlcmd.exe -S <Server> -d <Database> -E -b -i <Script> -v XXX="Batch script"
Run Code Online (Sandbox Code Playgroud)
我希望输出为:
批处理脚本
但输出是:
SQL脚本
这是意图,还是必须:setvar
删除SQL脚本中的语句?
我:setvar
在脚本中提供了语句,因此我可以使用SQLCMD模式在SQL Management Studio中编辑/测试脚本,但是在我的测试和生产环境中从命令行运行脚本.
所以我只花了5个小时来解决一个问题,原因不仅是旧的不可靠, ISNUMERIC
而且看起来我的问题只出现在UDF中ISNUMERIC
声明WITH SCHEMABINDING
并在存储过程中被调用(我有很多要将其提炼成测试用例的工作,但我的第一个需要是用可靠的东西替换它.
关于良好,有效的替代品的任何建议ISNUMERIC()
.显然,真正需要的是变化int
,money
等等,但什么是使用(最好是在T-SQL,因为在这个项目上,我仅限于SQL Server的人,因为这是一个高容量的SQL服务器到SQL Server数据处理任务)?
我有一个我正在研究的ASP.NET MVC应用程序.我一直在使用IIS6和SQL 2008 Express在Windows Server 2003上进行开发,一切都运行良好.我最近决定试用Windows 7测试版,所以现在我正在使用IIS7,并且遇到了与我的数据库连接的问题,我似乎无法弄清楚.
我可以很好地运行/调试应用程序,但每当我尝试访问需要访问数据库的页面时,我都会收到以下错误:
"无法打开登录请求的数据库"MyDatabaseName".登录失败.用户'IIS APPPOOL\MyApplicationName'登录失败."
我显然有一些错误的安全配置设置,但我似乎找不到任何关于如何正确设置它的好文档.我试过在数据库上给予NETWORK SERVICE权限,但这似乎不起作用.任何人都知道我需要做什么来给这个数据库"IIS APPPOOL\MyApplicationName"权限?我错过了一些明显的东西吗
谢谢...
我正在使用MS SQL 2005,当我创建一个函数时,我需要设置模式名称来调用它:
select dbo.MyFunc
Run Code Online (Sandbox Code Playgroud)
我的所有表都是"dbo"模式,我不需要模式名称来引用它,所以我想知道我是否缺少一些可以对函数执行相同操作的配置.
我在sql server 2000中有这个查询:
select pwdencrypt('AAAA')
Run Code Online (Sandbox Code Playgroud)
它输出加密的'AAAA'字符串:
0x0100CF465B7B12625EF019E157120D58DD46569AC7BF4118455D12625EF019E157120D58DD46569AC7BF4118455D
如何从其原点(即'AAAA')转换(解密)输出?
如何从sql语句返回常量?
例如,如果我的(布尔表达式)为真,我将如何更改下面的代码以便"我的消息"将返回
if (my boolean expression)
"my message"
else
select top 1 name from people;
Run Code Online (Sandbox Code Playgroud)
我正在使用ms sql 2000
我正在使用具有有限权限的数据库用户,使用C#方法将ADO.NET 2.0 SqlBulkCopy对象批量插入到MS SQL 2005数据库中.当我尝试运行该操作时,我收到错误消息:
批量复制失败.用户对表'theTable'没有ALTER TABLE权限.ALTER TABLE权限是必需上批量复制操作的目标表,如果该表具有触发器或检查约束,但
'FIRE_TRIGGERS'
还是'CHECK_CONSTRAINTS'
散装提示没有被指定为选项,以批量复制命令.
我阅读了一些文档并使用构造函数创建了批量复制对象,该构造函数允许我指定这样的东西:
SqlBulkCopy bc = new SqlBulkCopy(
System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"],
SqlBulkCopyOptions.FireTriggers & SqlBulkCopyOptions.CheckConstraints);
Run Code Online (Sandbox Code Playgroud)
但这并没有改变任何东西 - 我得到了和以前一样的错误信息.我尝试摆弄其他一些SqlBulkCopyOptions值,但没有运气.我真的以为这会解决这个问题,我错过了什么吗?
我在表上向用户授予ALTER后测试了该过程,操作成功.但是,这不适合我的情况.
我正在尝试在SQL Server 2008中备份数据库,并使用新的压缩功能压缩数据库.但是,当我运行以下代码时,我收到一个奇怪的错误消息:
Backup Database <Database> To Disk 'C:\Backup' With Compression
Run Code Online (Sandbox Code Playgroud)
我收到此错误消息:
标准版不支持带压缩的备份数据库
这是否意味着我必须升级到完整版或有没有办法在标准版中启用压缩?
这是Visual Studio 2008.显然与扩展的静态类有关.
public class Dummy
{
public readonly int x;
public Dummy(int x)
{
this.x = x;
}
public override string ToString()
{
return x.ToString();
}
}
[Obsolete("Do Not Use", true)]
public static class Extensions
{
public static int Squared(this Dummy Dummy)
{
return Dummy.x * Dummy.x;
}
}
class Program
{
static void Main(string[] args)
{
var d = new Dummy(42);
Console.WriteLine(String.Format("{0}^2={1}", d, d.Squared()));
}
}
Run Code Online (Sandbox Code Playgroud) 我需要做这样的事情,但SQL Server 2008不喜欢它.我的查询实际上比这更复杂,我意识到这不是完成我正在做的事情的最好方法,但我的重点是WITH语句的功能而不是select和where语句.
WITH stuff1 AS(从名为startdate> 0的员工中选择名称,startdate,id)
WITH stuff2 AS(从stuff1中选择名称,startdate,id)
select*from stuff2,其中id> 10
sql-server ×7
sql ×2
.net ×1
ado.net ×1
asp.net-mvc ×1
attributes ×1
backup ×1
c# ×1
compression ×1
encryption ×1
hash ×1
iis-7 ×1
isnumeric ×1
obsolete ×1
passwords ×1
schema ×1
security ×1
sqlbulkcopy ×1
sqlcmd ×1
t-sql ×1