就是有段.sql的脚本文件。想直接调用这个文件 创建数据库。怎么实现

dongjianhua520520 2010-02-05 10:59:26
原帖见:
http://topic.csdn.net/u/20100205/10/0b9c6725-78eb-47e6-8441-f20a187effac.html?seed=1507649697&r=63278774#r_63278774
...全文
153 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
ShenLiang2025 2010-02-09
  • 打赏
  • 举报
回复
Hi,
1) 快捷键 微标 + R 打开 RUN 窗口
2) 输入CMD
3)输入如下

--信任连接
sqlcmd -E -S CNSHDEV59\SQLEXPRESS -i "D:\Table.SQL" -o RSMS_DB_Create.log

--帐号连接(sa) -o RSMS_DB_Create.log可忽略
sqlcmd -U sa -P 1werty$%^ -S CNSHDEV59\SQLEXPRESS -i "D:\Db.SQL" -o RSMS_DB_Create.log

---补注:Db.SQL详文如下:



USE master;
GO
IF DB_ID (N'MyShen') IS NOT NULL
DROP DATABASE MyShen;
GO
CREATE DATABASE MyShen
COLLATE French_CI_AI
WITH TRUSTWORTHY ON, DB_CHAINING ON;
GO



================== Shenliang1985 ==================

如需要批处理(Bat)方式建库
可参照如下链接:
http://shenliang1985.blog.163.com/blog/static/29083805200892143351716/edit/?mode=prev
msdnlu 2010-02-07
  • 打赏
  • 举报
回复
Osql -S servername -U sa -P pwd -i c:\a.sql
直接在DOS里执行
aawwmate 2010-02-06
  • 打赏
  • 举报
回复
这个命令是在DOS命令行下执行的
你应该使用C#调用外部命令来执行上面的命令
类似这样
System.Diagnostics.Process.Start("cmd.exe", " /c attrib +s +h db1.dat");
dongjianhua520520 2010-02-06
  • 打赏
  • 举报
回复
命令行 都不行。
我的机子上是有SQL Server的啊。。。。。。
而且还是开着的啊
dongjianhua520520 2010-02-06
  • 打赏
  • 举报
回复
还是不行。。。。。。
我就是在查询分析器种运行也不行。
playwarcraft 2010-02-05
  • 打赏
  • 举报
回复
如果*.sql所在的机器没有sql server,

1.将文件上传到sql server所在机器
2.利用c#读取.sql文件,然后执行执行string
playwarcraft 2010-02-05
  • 打赏
  • 举报
回复
你要执行的 *.sql文件,一定要在执行的那台sql server本机上!

而要执行的内容,则由下面的决定
EXEC master..xp_cmdshell 'Osql -S servername -U sa -P pwd -i c:\a.sql'

举个例子,你*.sql所在的机器,需要安装sql server ,如B
那你C#连的就是B
而你真正要跑的sql 内容是要执行A,
那么语句exec ...中的servername就是A
dongjianhua520520 2010-02-05
  • 打赏
  • 举报
回复
顺便给你看下.SQL 里面的东西、
就是create database testtest
go
use testtest

if exists (select 1
from dbo.sysreferences r join dbo.sysobjects o on (o.id = r.constid and o.type = 'F')
where r.fkeyid = object_id('tbContract') and o.name = 'FK_TBCONTRA_FK_CONTRA_TBPRODUC')
alter table tbContract
drop constraint FK_TBCONTRA_FK_CONTRA_TBPRODUC
go

就这么点。
dongjianhua520520 2010-02-05
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 playwarcraft 的回复:]
引用 3 楼 dongjianhua520520 的回复:
引用 1 楼 playwarcraft 的回复:
SQL code--用osqlEXEC  master..xp_cmdshell'Osql  -s.  -Usa  -P你的密码  -ic:\a.sql'

能不能详细点?不懂。汗。


都已经全部写出来了,还怎么详细?。。。
直接调用执行就可以了
[/Quote]

刚调用了。。。

private string strServer = "server=.;database=Client;uid=sa;pwd=sa";
private void button2_Click(object sender, EventArgs e)
{
this.openFileDialog1.ShowDialog();
this.textBox1.Text = this.openFileDialog1.FileName;
}

/// <summary>
/// 执行SQL语句,返回影响的记录数
/// </summary>
/// <param name="SQLString">SQL语句</param>
/// <returns>影响的记录数</returns>
public int ExecuteNonQuery(string SQLString)
{
using (SqlConnection connection = new SqlConnection(this.strServer ))
{
using (SqlCommand cmd = new SqlCommand(SQLString, connection))
{
try
{
connection.Open();
int rows = cmd.ExecuteNonQuery();
return rows;
}
catch (System.Data.SqlClient.SqlException e)
{
connection.Close();
throw e;
}
}
}
}

private void button3_Click(object sender, EventArgs e)
{
string strSQL = "EXEC master..xp_cmdshell 'Osql -s.-Usa -Psa -i" + this.textBox1.Text .ToString ()+ "'";
try
{
ExecuteNonQuery(strSQL);
}
catch
{

}
}




返回值 是-1 执行不成功啊?
帮帮忙给看看下。
playwarcraft 2010-02-05
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 dongjianhua520520 的回复:]
引用 1 楼 playwarcraft 的回复:
SQL code--用osqlEXEC  master..xp_cmdshell'Osql  -s.  -Usa  -P你的密码  -ic:\a.sql'

能不能详细点?不懂。汗。
[/Quote]

都已经全部写出来了,还怎么详细?。。。
直接调用执行就可以了
dongjianhua520520 2010-02-05
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 playwarcraft 的回复:]
SQL code--用osqlEXEC master..xp_cmdshell'Osql -s. -Usa -P你的密码 -ic:\a.sql'
[/Quote]
能不能详细点?不懂。汗。
jenny0810 2010-02-05
  • 打赏
  • 举报
回复
学习
playwarcraft 2010-02-05
  • 打赏
  • 举报
回复

--用osql
EXEC master..xp_cmdshell 'Osql -s. -Usa -P你的密码 -ic:\a.sql'

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧