CBBing
V2EX  ›  .NET

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

  •  1
     
  •   CBBing · May 14, 2016 · 6200 views
    This topic created in 3682 days ago, the information mentioned may be changed or developed.

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

    Supplement 1  ·  May 15, 2016
    我之前的连接字符串如下
    <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"/>
    但是在数据库一栏没有
    手动修改连接还会报错
    Supplement 2  ·  May 15, 2016
    我安装了 SQL server 2014 连接到本地 localDb 发现用 windows 验证登录可以显示数据库文件,
    用 SQL server 身份可以登录,但是不能打开数据库文件
    Supplement 3  ·  May 15, 2016
    我现在用这个连接字符串
    <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 replies    2016-05-15 21:35:49 +08:00
    bdbai
        1
    bdbai  
       May 15, 2016 via Android   ❤️ 1
    检查一下 Debug 和 Release 两个版本的 Web.config 中连接字符串有没有出入?
    CBBing
        2
    CBBing  
    OP
       May 15, 2016
    @bdbai 我试试看
    CBBing
        3
    CBBing  
    OP
       May 15, 2016
    @bdbai debug 和 release 里没有连接字符串
    bdbai
        4
    bdbai  
       May 15, 2016 via Android   ❤️ 1
    @CBBing 之前的连接字符串可以用吗?
    CBBing
        5
    CBBing  
    OP
       May 15, 2016
    @bdbai 可用,我之前开发的时候就是用这个连接字符串的
    CBBing
        7
    CBBing  
    OP
       May 15, 2016
    @bdbai 还是不行
    CBBing
        8
    CBBing  
    OP
       May 15, 2016
    jeansfish
        9
    jeansfish  
       May 15, 2016   ❤️ 1
    Integrated Security=True 改成 false 或者删掉,如果你要用用户名密码的话
    bdbai
        10
    bdbai  
       May 15, 2016 via Android   ❤️ 1
    @CBBing 按照楼上的试一下。直接把 |DataDirectory| 用 mdf 目录代掉
    andrewpsy
        11
    andrewpsy  
       May 15, 2016   ❤️ 1
    要不用 userid+password 要不用 integrated security, 两个一起用是怎么个意思。
    CBBing
        12
    CBBing  
    OP
       May 15, 2016
    @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
       May 15, 2016
    @andrewpsy 现在改了
    andrewpsy
        14
    andrewpsy  
       May 15, 2016   ❤️ 1
    @CBBing 你是什么版本的 MSQL ?我从来没见过 AttachDbFilename 。
    你把 DataSouce 拆开变成: DataSource=(localdb);initial category=mssqllocaldb 然后去掉 AttachDbFilename 试试。
    CBBing
        15
    CBBing  
    OP
       May 15, 2016
    @andrewpsy 上面写的是 SQL server 12.0.2000
    andrewpsy
        16
    andrewpsy  
       May 15, 2016   ❤️ 1
    你是了这个没有?
    <add name="AccountsContext" connectionString="Data Source=(LocalDb);Initial Category=MSSQLLocalDB;UserID=sa;Password=CBB123xyz" providerName="System.Data.SqlClient"/>
    bdbai
        17
    bdbai  
       May 15, 2016 via Android   ❤️ 1
    @andrewpsy 他那个是 VS 自带的 Local DB ,数据库就一文件。
    CBBing
        18
    CBBing  
    OP
       May 15, 2016
    @andrewpsy “/”应用程序中的服务器错误。

    不支持关键字: “ initial category ”。
    andrewpsy
        19
    andrewpsy  
       May 15, 2016   ❤️ 1
    @CBBing @bdbai 不熟悉 VS 自带的文件型数据库就不瞎支招了。
    CBBing
        20
    CBBing  
    OP
       May 15, 2016
    @andrewpsy 还是谢谢你
    beginor
        21
    beginor  
       May 15, 2016 via Android   ❤️ 1
    IIS 的话需要修改应用程序池账户,默认的程序池账户权限太低,,话说 localdb 的性能没得说,就是有限制数据文件大小和网络访问
    CBBing
        22
    CBBing  
    OP
       May 15, 2016
    @beginor 请问怎么修改
    CBBing
        24
    CBBing  
    OP
       May 15, 2016
    @beginor 这个之前设置过了
    CBBing
        25
    CBBing  
    OP
       May 15, 2016
    @beginor 不过重新试了一遍,还是不行
    beginor
        26
    beginor  
       May 15, 2016 via Android   ❤️ 1
    @CBBing 问 bing 吧,关键字 localdb iis ,求人如若求 bing
    CBBing
        27
    CBBing  
    OP
       May 15, 2016
    @beginor 我一直在用 google ,难道是关键词不对?
    qiyuey
        28
    qiyuey  
       May 15, 2016 via Android   ❤️ 1
    用专门的数据库服务器,不要用 localDb
    CBBing
        29
    CBBing  
    OP
       May 15, 2016
    @qiyuey 那我 localDb 里的数据库文件怎么处理,里面的数据还需要用的
    qiyuey
        30
    qiyuey  
       May 15, 2016 via Android   ❤️ 1
    @CBBing 数据量不大就直接导出 localDb 到 SQL 文件,然后再导入 Sql Server 里
    jeansfish
        32
    jeansfish  
       May 15, 2016   ❤️ 1
    这个呢?
    beginor
        33
    beginor  
       May 15, 2016 via Android   ❤️ 1
    @CBBing 也可能是姿势不对 😂
    jeansfish
        34
    jeansfish  
       May 15, 2016   ❤️ 1
    Google 搜 IIS localdb 第一个就是这个
    andrewpsy
        35
    andrewpsy  
       May 15, 2016   ❤️ 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
       May 15, 2016
    @andrewpsy 谢谢,但还是不行,我准备再试几次,如果还是一样的话,就用 SQL server 做了
    jsq2627
        37
    jsq2627  
       May 15, 2016   ❤️ 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
       May 15, 2016
    @jsq2627 嗯, 好的,多谢指教
    CBBing
        39
    CBBing  
    OP
       May 15, 2016   ❤️ 1
    @bdbai
    @jeansfish
    @andrewpsy
    @beginor
    @qiyuey
    @jsq2627 多谢你们指点迷津,现在我已经把数据从 localDb 转移到了 SQL server Express ,问题解决了,再次谢谢你们
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   880 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 52ms · UTC 21:23 · PVG 05:23 · LAX 14:23 · JFK 17:23
    ♥ Do have faith in what you're doing.