@@ -592,12 +592,22 @@ def column_type(ci:)
592592 end
593593
594594 def column_definitions_sql ( database , identifier )
595- object_name = prepared_statements ? "@0" : quote ( identifier . object )
596- schema_name = if identifier . schema . blank?
597- "schema_name()"
598- else
599- prepared_statements ? "@1" : quote ( identifier . schema )
600- end
595+ schema_name = "schema_name()"
596+
597+ if prepared_statements
598+ object_name = "@0"
599+ schema_name = "@1" if identifier . schema . present?
600+ else
601+ object_name = quote ( identifier . object )
602+ schema_name = quote ( identifier . schema ) if identifier . schema . present?
603+ end
604+
605+ object_id_arg = identifier . schema . present? ? "CONCAT(#{ schema_name } ,'.',#{ object_name } )" : object_name
606+
607+ if identifier . temporary_table?
608+ database = "TEMPDB"
609+ object_id_arg = "CONCAT('#{ database } ','..',#{ object_name } )"
610+ end
601611
602612 %{
603613 SELECT
@@ -652,7 +662,7 @@ def column_definitions_sql(database, identifier)
652662 AND k.unique_index_id = ic.index_id
653663 AND c.column_id = ic.column_id
654664 WHERE
655- o.name = #{ object_name }
665+ o.Object_ID = Object_ID( #{ object_id_arg } )
656666 AND s.name = #{ schema_name }
657667 ORDER BY
658668 c.column_id
@@ -674,7 +684,7 @@ def remove_check_constraints(table_name, column_name)
674684 end
675685
676686 def remove_default_constraint ( table_name , column_name )
677- # If their are foreign keys in this table, we could still get back a 2D array, so flatten just in case.
687+ # If there are foreign keys in this table, we could still get back a 2D array, so flatten just in case.
678688 execute_procedure ( :sp_helpconstraint , table_name , "nomsg" ) . flatten . select do |row |
679689 row [ "constraint_type" ] == "DEFAULT on column #{ column_name } "
680690 end . each do |row |
0 commit comments