V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
CBBing
V2EX  ›  .NET

ASP.NET 怎么在 IIS 中连接在 VS 中自带的 SQL server 数据库?

  •  1
     
  •   CBBing · 2016-05-14 23:16:19 +08:00 · 5608 次点击
    这是一个创建于 2897 天前的主题,其中的信息可能已经有所发展或是发生改变。

    RT 我之前一直用的是 VS2015 自带的 SQL server 本地数据库,验证方式是 windows 身份验证 现在准备把部署本地 IIS 上, IIS 貌似不支持 windows 身份验证连接数据库,但我在 VS 上修改的数据库连接就会报错 求助怎么解决这个问题?

    第 1 条附言  ·  2016-05-15 09:20:01 +08:00
    我之前的连接字符串如下
    <add name="AccountsContext" connectionString="Data Source=(LocalDb)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\accounts.mdf;Integrated Security=True" providerName="System.Data.SqlClient" />

    现在需要改成 SQL server 方式连接
    <add name="AccountsContext" connectionString="Data Source=(LocalDb)\MSSQLLocalDB;Initial Catalog=Example;AttachDbFilename=|DataDirectory|\accounts.mdf;UserID=CBB;Password=CBB123xyz;Integrated Security=True" providerName="System.Data.SqlClient"/>
    但是在数据库一栏没有
    手动修改连接还会报错
    第 2 条附言  ·  2016-05-15 11:03:39 +08:00
    我安装了 SQL server 2014 连接到本地 localDb 发现用 windows 验证登录可以显示数据库文件,
    用 SQL server 身份可以登录,但是不能打开数据库文件
    第 3 条附言  ·  2016-05-15 16:01:01 +08:00
    我现在用这个连接字符串
    <add name="AccountsContext" connectionString="Data Source=(LocalDb)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\accounts.mdf;User Id=sa;Password=CBB123xyz" providerName="System.Data.SqlClient"/>
    在 VS 上已经可以连接了, 但在 IIS 上还是报错
    : Login failed for user 'sa'.
    39 条回复    2016-05-15 21:35:49 +08:00
    bdbai
        1
    bdbai  
       2016-05-15 09:18:10 +08:00 via Android   ❤️ 1
    检查一下 Debug 和 Release 两个版本的 Web.config 中连接字符串有没有出入?
    CBBing
        2
    CBBing  
    OP
       2016-05-15 09:20:19 +08:00
    @bdbai 我试试看
    CBBing
        3
    CBBing  
    OP
       2016-05-15 09:21:46 +08:00
    @bdbai debug 和 release 里没有连接字符串
    bdbai
        4
    bdbai  
       2016-05-15 09:28:35 +08:00 via Android   ❤️ 1
    @CBBing 之前的连接字符串可以用吗?
    CBBing
        5
    CBBing  
    OP
       2016-05-15 09:36:10 +08:00
    @bdbai 可用,我之前开发的时候就是用这个连接字符串的
    bdbai
        6
    bdbai  
       2016-05-15 09:48:51 +08:00 via Android   ❤️ 1
    CBBing
        7
    CBBing  
    OP
       2016-05-15 10:08:30 +08:00
    @bdbai 还是不行
    CBBing
        8
    CBBing  
    OP
       2016-05-15 10:16:10 +08:00
    jeansfish
        9
    jeansfish  
       2016-05-15 10:27:15 +08:00   ❤️ 1
    Integrated Security=True 改成 false 或者删掉,如果你要用用户名密码的话
    bdbai
        10
    bdbai  
       2016-05-15 10:38:41 +08:00 via Android   ❤️ 1
    @CBBing 按照楼上的试一下。直接把 |DataDirectory| 用 mdf 目录代掉
    andrewpsy
        11
    andrewpsy  
       2016-05-15 10:47:20 +08:00   ❤️ 1
    要不用 userid+password 要不用 integrated security, 两个一起用是怎么个意思。
    CBBing
        12
    CBBing  
    OP
       2016-05-15 10:48:19 +08:00
    @jeansfish
    @bdbai <add name="AccountsContext" connectionString="Data Source=(LocalDb)\MSSQLLocalDB;AttachDbFilename=E:\CNSOFT\MVCDEMO\MVCDEMO\APP_DATA\ACCOUNTS.MDF;UserID=sa;Password=CBB123xyz" providerName="System.Data.SqlClient"/>
    还是不行
    CBBing
        13
    CBBing  
    OP
       2016-05-15 10:48:35 +08:00
    @andrewpsy 现在改了
    andrewpsy
        14
    andrewpsy  
       2016-05-15 10:51:57 +08:00   ❤️ 1
    @CBBing 你是什么版本的 MSQL ?我从来没见过 AttachDbFilename 。
    你把 DataSouce 拆开变成: DataSource=(localdb);initial category=mssqllocaldb 然后去掉 AttachDbFilename 试试。
    CBBing
        15
    CBBing  
    OP
       2016-05-15 10:53:43 +08:00
    @andrewpsy 上面写的是 SQL server 12.0.2000
    andrewpsy
        16
    andrewpsy  
       2016-05-15 10:55:46 +08:00   ❤️ 1
    你是了这个没有?
    <add name="AccountsContext" connectionString="Data Source=(LocalDb);Initial Category=MSSQLLocalDB;UserID=sa;Password=CBB123xyz" providerName="System.Data.SqlClient"/>
    bdbai
        17
    bdbai  
       2016-05-15 10:57:32 +08:00 via Android   ❤️ 1
    @andrewpsy 他那个是 VS 自带的 Local DB ,数据库就一文件。
    CBBing
        18
    CBBing  
    OP
       2016-05-15 11:00:45 +08:00
    @andrewpsy “/”应用程序中的服务器错误。

    不支持关键字: “ initial category ”。
    andrewpsy
        19
    andrewpsy  
       2016-05-15 11:08:18 +08:00   ❤️ 1
    @CBBing @bdbai 不熟悉 VS 自带的文件型数据库就不瞎支招了。
    CBBing
        20
    CBBing  
    OP
       2016-05-15 11:10:43 +08:00
    @andrewpsy 还是谢谢你
    beginor
        21
    beginor  
       2016-05-15 11:13:18 +08:00 via Android   ❤️ 1
    IIS 的话需要修改应用程序池账户,默认的程序池账户权限太低,,话说 localdb 的性能没得说,就是有限制数据文件大小和网络访问
    CBBing
        22
    CBBing  
    OP
       2016-05-15 11:17:09 +08:00
    @beginor 请问怎么修改
    beginor
        23
    beginor  
       2016-05-15 11:21:32 +08:00 via Android   ❤️ 1
    CBBing
        24
    CBBing  
    OP
       2016-05-15 11:34:10 +08:00
    @beginor 这个之前设置过了
    CBBing
        25
    CBBing  
    OP
       2016-05-15 11:34:34 +08:00
    @beginor 不过重新试了一遍,还是不行
    beginor
        26
    beginor  
       2016-05-15 11:45:07 +08:00 via Android   ❤️ 1
    @CBBing 问 bing 吧,关键字 localdb iis ,求人如若求 bing
    CBBing
        27
    CBBing  
    OP
       2016-05-15 11:47:39 +08:00
    @beginor 我一直在用 google ,难道是关键词不对?
    qiyuey
        28
    qiyuey  
       2016-05-15 11:51:24 +08:00 via Android   ❤️ 1
    用专门的数据库服务器,不要用 localDb
    CBBing
        29
    CBBing  
    OP
       2016-05-15 11:52:42 +08:00
    @qiyuey 那我 localDb 里的数据库文件怎么处理,里面的数据还需要用的
    qiyuey
        30
    qiyuey  
       2016-05-15 11:55:17 +08:00 via Android   ❤️ 1
    @CBBing 数据量不大就直接导出 localDb 到 SQL 文件,然后再导入 Sql Server 里
    jeansfish
        32
    jeansfish  
       2016-05-15 11:56:50 +08:00   ❤️ 1
    这个呢?
    beginor
        33
    beginor  
       2016-05-15 12:07:03 +08:00 via Android   ❤️ 1
    @CBBing 也可能是姿势不对 😂
    jeansfish
        34
    jeansfish  
       2016-05-15 12:09:01 +08:00   ❤️ 1
    Google 搜 IIS localdb 第一个就是这个
    andrewpsy
        35
    andrewpsy  
       2016-05-15 12:15:02 +08:00   ❤️ 1
    @CBBing 我不甘心开了虚拟机用 VS2015 自己试了一下,以下:
    0. 打开 VS2015 的 Sql Server Object Explorer
    1. 展开 (localdb)\MSSQLLocalDB
    2. 右键点击你的数据库,菜单里找到“ new query ”点击,输入以下三句后点击“ execute ”
    CREATE LOGIN [CBBing] WITH PASSWORD = 'CBB123xyz';
    CREATE USER [CBBing] FOR LOGIN [CBBing];
    exec sp_addrolemember 'db_owner', 'CBBing'
    4. 把 connectionstring 改成:<add name="AccountsContext" connectionString="Data Source=(LocalDb)\MSSQLLocalDB;AttachDbFilename=E:\CNSOFT\MVCDEMO\MVCDEMO\APP_DATA\ACCOUNTS.MDF;UserID=CBBing;Password=CBB123xyz" providerName="System.Data.SqlClient"/>
    CBBing
        36
    CBBing  
    OP
       2016-05-15 14:33:49 +08:00
    @andrewpsy 谢谢,但还是不行,我准备再试几次,如果还是一样的话,就用 SQL server 做了
    jsq2627
        37
    jsq2627  
       2016-05-15 19:50:31 +08:00   ❤️ 1
    最好不要在完整 IIS 下用 LocalDB ,问题比较多
    https://blogs.msdn.microsoft.com/sqlexpress/2011/12/08/using-localdb-with-full-iis-part-1-user-profile/
    https://blogs.msdn.microsoft.com/sqlexpress/2011/12/08/using-localdb-with-full-iis-part-2-instance-ownership/

    要不就 IIS Express + LocalDB ,要不 IIS + SQL Server Express 。 LocalDB 本来就是特意为 IIS Express 设计的。
    CBBing
        38
    CBBing  
    OP
       2016-05-15 21:05:27 +08:00
    @jsq2627 嗯, 好的,多谢指教
    CBBing
        39
    CBBing  
    OP
       2016-05-15 21:35:49 +08:00   ❤️ 1
    @bdbai
    @jeansfish
    @andrewpsy
    @beginor
    @qiyuey
    @jsq2627 多谢你们指点迷津,现在我已经把数据从 localDb 转移到了 SQL server Express ,问题解决了,再次谢谢你们
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1235 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 17:51 · PVG 01:51 · LAX 10:51 · JFK 13:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.