读书人

Code First联接远程数据库在数据库

发布时间: 2012-12-15 15:16:03 作者: rapoo

Code First连接远程数据库,在数据库 'master' 中拒绝了 CREATE DATABASE 权限。


static void Main(string[] args)
{
var builder = new ModelBuilder();
builder.Configurations.Add(new BookConfiguration());
builder.Entity<Person>();
builder.Entity<Publisher>().Property(p => p.Name).IsRequired().HasMaxLength(50);

var model = builder.CreateModel();

Console.Write("Enter an ISBN for the new book: ");
var isbn = Console.ReadLine();

Console.Write("Enter a title for the new book: ");
var title = Console.ReadLine();

// Data access with DbContext
using (var context = new SimpleBookCatalog("CodeFirstWalkthrough", model))
{
var book = new Book
{
ISBN = isbn,
Title = title,
FirstPublished = DateTime.Today,
IsFiction = false,
Author = new Author { FirstName = "Rowan", LastName = "Miller" },
Publisher = new Publisher { Name = "EF Books" }
};

context.Books.Add(book); //报错:在数据库 'master' 中拒绝了 CREATE DATABASE 权限。
context.SaveChanges();
}
}
数据库连接配置:
<add name="MyConnection"
providerName="System.Data.SqlClient"
connectionString="data Source=192.168.253.31\SQLEXPRESS; initial catalog=CodeFirstWalkthrough;User ID=sa;Password=uf_1234;Persist Security Info=True;User Instance=True" />



创建数据库不成功,在master中拒绝create,不知道怎么解决啊,唉!

[最优解释]
null
[其他解释]
1.服务器上是否有同名的数据库
2.登录服务器的用户名或密码权限是否足够
[其他解释]

引用:
1.服务器上是否有同名的数据库
2.登录服务器的用户名或密码权限是否足够


同名数据库没有,这种可能排除!
权限问题,我配置文件里写的是sa登录,sa的权限是够了,但好像这个sa没起到作用!
程序执行到最后,出现这么一个异常!

“无法打开登录所请求的数据库 "CodeFirstWalkthrough"。登录失败。
用户 'new-PC\new' 登录失败。”

好像是使用的 用户 'new-PC\new' 用户登录的,我到数据库里添加用户'new-PC\new'添加不上,用户名不合法。。。。



[其他解释]
运行过一次,数据库已经建好了吧
[其他解释]
引用:
运行过一次,数据库已经建好了吧


没有,一直失败,从未成功过
[其他解释]
你的数据库没有设置为混合模式登录
[其他解释]
引用:



是权限问题,我用windows直接登录上,在master表下没有创建数据库的权限,这个应该怎么改啊?
[其他解释]
new是你的windows登陆用户,可能属于users组,没有权限也正常呀,你用administrator用户登陆就有权限了
[其他解释]
引用:
new是你的windows登陆用户,可能属于users组,没有权限也正常呀,你用administrator用户登陆就有权限了



[其他解释]
引用:
引用:
new是你的windows登陆用户,可能属于users组,没有权限也正常呀,你用administrator用户登陆就有权限了


我现在用windows登录方式登录出现这个问题了,百度google了许多也没解决这个问题,晕啊。。。
[其他解释]
你的数据库服务器在哪儿?是自己这台吗?是的话用服务器名称用 (local) ,不是的话要到那台数据库服务器上去操作
[其他解释]
引用:
你的数据库服务器在哪儿?是自己这台吗?是的话用服务器名称用 (local) ,不是的话要到那台数据库服务器上去操作


远程连的服务器,不是我的电脑!唉,不在这儿浪费时间了吧,使用Code First创建数据库的时候,我需要怎么做才能使用 SQL Server身份验证的方式创建数据库?
我现在的这个配置根本就不执行“User ID=sa;Password=uf_1234”这段代码,使用的是windows的方式,实际上我是需要使用SQL Server方式创建数据库!
[其他解释]
引用:
引用:
你的数据库服务器在哪儿?是自己这台吗?是的话用服务器名称用 (local) ,不是的话要到那台数据库服务器上去操作


远程连的服务器,不是我的电脑!唉,不在这儿浪费时间了吧,使用Code First创建数据库的时候,我需要怎么做才能使用 SQL Server身份验证的方式创建数据库?
我现在的这个配置根本就不执行“User ID=sa;Password=uf_……

配置问题解决了,程序也能正常运行了,但是运行完后也不报错,数据库也没生成,这是什么问题呢?
感觉数据库是创建成功了,但就是没看见数据库,这是什么问题啊?
[其他解释]
确定你配置问题解决了?而不是异常被忽略了?


[其他解释]
引用:
确定你配置问题解决了?而不是异常被忽略了?



发现问题了,数据库确实创建成功了,但是在我本地,我是连得服务器上的远程数据库,配置信息也是远程的,但是为什么数据库在我本地创建了呢????
这个问题怎么解决啊???


<add name="MyConnection"
connectionString="Data Source=192.168.253.31\sqlexpress;Initial Catalog=Test2;uid=sa;pwd=uf_58759352;Integrated Security=True;Pooling=False;User Instance=True"


providerName="System.Data.SqlClient" />


[其他解释]
EF默认是用context同名的数据库连接字符串的,你这个MyConnection在代码的哪儿体现了?
[其他解释]
引用:
EF默认是用context同名的数据库连接字符串的,你这个MyConnection在代码的哪儿体现了?


我自己手动添加了一个App.config的配置文件,在这里面配置的要生成的数据库信息,我刚才试了一下,这个配置文件确实没起作用,不过我又把配置信息写到代码里,依然不好用,出现异常:“在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器。请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接。 (provider: SQL Network Interfaces, error: 26 - 定位指定的服务器/实例时出错)”,这又是什么问题呢?


using (var context = new SimpleBookCatalog(@"Data Source=192.168.253.31\sqlexpress;Initial Catalog=CodeFirstWalkthroughTest;uid=sa;pwd=uf_1234;Integrated Security=True;Pooling=False;User Instance=True", model))
{
var book = new Book
{
ISBN = isbn,
Title = title,
FirstPublished = DateTime.Today,
IsFiction = false,
Author = new Author { FirstName = "Rowan", LastName = "Miller" },
Publisher = new Publisher { Name = "EF Books" }
};

context.Books.Add(book);
context.SaveChanges();
}

[其他解释]
引用:
你服务器名称到底是192.168.253.31?还是192.168.253.31\sqlexpress?这两个不同的,后面这个一般是本地机上用的实例,服务器上安装一般不装sqlexpress版本的


我把sqlexpress去掉了,问题又回去了,异常:“用户 '' 登录失败。该用户与可信 SQL Server 连接无关联。”,还是用windows身份验证的方式登录的,不知道这里到底应该怎么控制???
[其他解释]
你服务器名称到底是192.168.253.31?还是192.168.253.31\sqlexpress?这两个不同的,后面这个一般是本地机上用的实例,服务器上安装一般不装sqlexpress版本的
[其他解释]
引用:
用这个界面去登录,选择sa方式,如果也是出现这个错误,就去远程登录服务器或者到服务器上直接看



这个界面,是不是选择了下面的sql和windows登录?还是选择上面的windows登录?


选择的sql和windows登录
[其他解释]

用这个界面去登录,选择sa方式,如果也是出现这个错误,就去远程登录服务器或者到服务器上直接看

这个界面,是不是选择了下面的sql和windows登录?还是选择上面的windows登录?
[其他解释]
把字符串里的Instance=True这个去掉,这个是针对sqlexpress数据库的
[其他解释]
引用:
引用:
用这个界面去登录,选择sa方式,如果也是出现这个错误,就去远程登录服务器或者到服务器上直接看

这个界面,是不是选择了下面的sql和windows登录?还是选择上面的windows登录?

选择的sql和windows登录


sa登录是成功的,就windows登录不成功,我感觉这个问题不是关键,我是想知道在代码怎么能控制使用sql方式登录!
[其他解释]

<add name="MyConnection"
providerName="System.Data.SqlClient"
connectionString="data Source=192.168.253.31\SQLEXPRESS; initial catalog=CodeFirstWalkthrough;User ID=sa;Password=uf_1234;Persist Security Info=True;User Instance=True" />


你是不是用本机sql开发,然后发布到服务器,修改了一下服务器地址和加上User ID=sa;Password=uf_1234?不能这样的,默认本机是用windows用户登录SQLEXPRESS数据库的文件,而不是数据库服务器。
[其他解释]
Integrated Security=True 这个也去掉,这个是集成方式验证,用windows方式认证的,
而且为什么要Pooling=False关闭连接池?
[其他解释]
OK,成功!
[其他解释]
引用:
Integrated Security=True 这个也去掉,这个是集成方式验证,用windows方式认证的,
而且为什么要Pooling=False关闭连接池?


上一个问题好了,现在又出现了这个问题“此操作要求连接到 'master' 数据库。无法创建与 'master' 数据库之间的连接,这是因为已打开原始数据库连接,并且已从连接字符串中删除凭据。请提供未打开的连接。”,我晕,这又是怎么了?
[其他解释]
null
[其他解释]
null

读书人网 >.NET

热点推荐