相关疑难解决方法(0)

varchar(max)变量的最大大小

在过去的任何时候,如果有人问我a的最大尺寸varchar(max),我会说2GB,或者查找一个更确切的数字(2 ^ 31-1,或2147483647).

但是,在最近的一些测试中,我发现varchar(max)变量显然超过了这个大小:

create table T (
    Val1 varchar(max) not null
)
go
declare @KMsg varchar(max) = REPLICATE('a',1024);
declare @MMsg varchar(max) = REPLICATE(@KMsg,1024);
declare @GMsg varchar(max) = REPLICATE(@MMsg,1024);
declare @GGMMsg varchar(max) = @GMsg + @GMsg + @MMsg;
select LEN(@GGMMsg)
insert into T(Val1) select @GGMMsg
select LEN(Val1) from T
Run Code Online (Sandbox Code Playgroud)

结果:

(no column name)
2148532224
(1 row(s) affected)
Msg 7119, Level 16, State 1, Line 6
Attempting to grow LOB beyond maximum allowed size of …
Run Code Online (Sandbox Code Playgroud)

t-sql sql-server

87
推荐指数
2
解决办法
25万
查看次数

我应该使用内联varchar(max)列还是将其存储在单独的表中?

我想在MS SQL Server 2005中创建一个表来记录某些系统操作的详细信息.从下面的表格设计中可以看出,除了之外的每一列Details都是不可为空的.

CREATE TABLE [Log]
(
[LogID] [int] IDENTITY(1,1) NOT NULL,
[ActionID] [int] NOT NULL,
[SystemID] [int] NOT NULL,
[UserID] [int] NOT NULL,
[LoggedOn] [datetime] NOT NULL,
[Details] [varchar](max) NULL
)
Run Code Online (Sandbox Code Playgroud)

因为Details列中不会始终包含数据.将此列存储在单独的表中并提供指向它的链接是否更有效?

CREATE TABLE [Log]
(
[LogID] [int] IDENTITY(1,1) NOT NULL,
[ActionID] [int] NOT NULL,
[SystemID] [int] NOT NULL,
[UserID] [int] NOT NULL,
[LoggedOn] [datetime] NOT NULL,
[DetailID] [int] NULL
)       

CREATE TABLE [Detail]
(
[DetailID] [int] IDENTITY(1,1) NOT NULL,
[Details] [varchar](max) NOT NULL …
Run Code Online (Sandbox Code Playgroud)

sql-server varchar normalization

16
推荐指数
2
解决办法
6822
查看次数

为什么我的server.mappath()不能在另一台电脑上工作?

我有我的电脑项目..但是当我将我上传的文件保存在我的项目内的文件夹中时.如果我在另一台电脑上传输我的项目,server.mappath()不工作..为什么?

我的问题上传功能

protected void addproblem_Click(object sender, EventArgs e)
{
    string filepath;
    if (problemupload.HasFile)
        try
        {
            if(problemupload.PostedFile.ContentType=="application/pdf")
            {
               // problemupload.SaveAs("F:\\0\\My project website\\sgipc\\problems\\" + problemupload.FileName);
               // filepath = "F:\\0\\My project website\\sgipc\\problems\\" + problemupload.PostedFile.FileName;
                problemupload.SaveAs(Server.MapPath("\\sgipc\\problems\\" + problemupload.FileName));
                filepath = Server.MapPath(problemupload.PostedFile.FileName);
                string con = " ";
                con = ConfigurationManager.ConnectionStrings["ConnectionString"].ToString();
                SqlConnection objsqlconn = new SqlConnection(con);
                objsqlconn.Open();
                string userid = Convert.ToString(Session["userid"]);
                SqlCommand cmd = new SqlCommand("INSERT INTO problemtable(problemname,problempath,userid,status) Values('" + probbox.Text + "','" + filepath + "','" + userid + "','" + "pending" + "')", objsqlconn); …
Run Code Online (Sandbox Code Playgroud)

asp.net

1
推荐指数
1
解决办法
541
查看次数

标签 统计

sql-server ×2

asp.net ×1

normalization ×1

t-sql ×1

varchar ×1